基于许多条件对数据帧进行多个子集化

时间:2013-04-06 22:47:01

标签: r dataframe

目前我有一个包含18列的数据框。我想根据数据框中其他六列中的数据组合将这些列中的数据“存在”,然后将其保存到文本文件中。 我想用于“存在”子集的列是:

*answer (1:4) [answer takes values 1 to 4]
*p.num (1:18)
*session (1:2)
*count (1:8)
*type (1:3)

因此有3456种可能的子集组合。

目前,我一直在使用以下内容并手动更改每行中的值并重新运行代码。

input<-subset(input, answer==1)
input.s2g<-subset(input, p.num == 1)
input.s2g<-subset(input.s2g, session == "S2")
input.s2g<-subset(input.s2g, count==8)
input.s2g<-subset(input.s2g, type==1)

write.table(s2g, file = "1_1_S2_8_1", sep = "\t", col.names = F, row.names = F)

然而这需要数小时。必须有一个更简单的方法吗?

1 个答案:

答案 0 :(得分:3)

我会尝试这些方法:

splitted <- split(input, list(input$answer,
                              input$p.num,
                              input$session,
                              input$count,
                              input$type))

filenames <- gsub("\\.", "_", names(splitted))

mapply(write.table, splitted, file = filenames, sep = "\t",
                    col.names = FALSE, row.names = FALSE)