그룹화 인수에 따라 행별로 data.frame
을 분할하는 것이 매우 쉽습니다. 그러나 어떻게 컬럼별로 나누고 함수를 적용 할 수 있습니까?그룹화 변수를 사용하여 data.frame을 열별로 나누기
my.df <- data.frame(a = runif(10),
b = runif(10),
c = runif(10),
d = runif(10))
grp <- as.factor(c(1,1, 2,2))
나는 그룹별로 콜럼 (colum)을 의미합니다.
나는 지금까지 가난한 사람의 적용입니다.
lapply(as.list(as.numeric(levels(grp))), FUN = function(x, cn, data) {
rowMeans(data[grp %in% x])
}, cn = grp, data = my.df)
편집 참여에 대한 여러분 모두 감사합니다. 나는 10 복제 *를 달리고 나의 working data.frame에는 대략 22000의 줄이있다. 이것들은 초 단위의 결과입니다.
Roman: 2.19
Joris: 4.60
Joris #2: 3.79 #changed sapply to lapply as suggested by Joris in the [R chatroom][1].
Gavin: 4.70
James & EDi: > 200 # * ran only one replicate due to the large order of magnitude difference
당면한 작업에 대한 래퍼 기능이 없다는 것이 이상하게 들리 더라고요. 언젠가는 언젠가는 우리가 할 수있을 것입니다
apply(X = my.df, MARGIN = 3, INDEX = my.groups, FUN = mean) # :)
데이터 프레임은 10 개 행을 가지고 있으며, GRP는 4 개 값이 있습니다. 그들은 어떻게 일치시켜야합니까? – hadley
@hadley : 데이터 프레임에는 4 개의 열이 있고 grp에는 4 개의 값이 있으므로 최대 일치 ... –
@hadley, 행이 아닌 열로 분할하므로 length (my.df)와 일치해야합니다. == 길이 (grp). –