У меня есть два data.frames:
df.1 <- data.frame(A=runif(10), B=runif(10), C=runif(10), D=runif(10))
df.2 <- data.frame(Var=factor(c("A", "B", "C", "D")), Info=c("X1", "X2", "X1", "X2"))
В df.1
, я хочу выбрать все столбцы, которые связаны с одним уровнем фактора в df.2$Info
я могу толькосделайте это очень неуклюжим способом, объединив сначала два data.frames, затем поднабор, затем переставив желаемый результат:
tmp <- as.data.frame(t(df.1))
tmp$Var=row.names(tmp)
tmp.m <- merge(tmp, df.2, by="Var")
df.X1 <- tmp.m[tmp.m$Info == "X1", ]
df.X1$Info <- factor(df.X1$Info) # drop unused factor levels
desired.output <- as.data.frame(t(df.X1))
names(desired.output) <- lapply(desired.output[1, ], as.character)
desired.output <- desired.output[-c(1,11),]
Мой вопрос: есть ли лучший, более быстрый и менее сложный способ (яуверен, что есть!).Спасибо.