【发布时间】:2025-12-21 14:05:06
【问题描述】:
我正在尝试创建一个循环,该循环将使用几个字段(field1、field2、field3)作为键来选择数据
field1 field2 field3 field4 field5 field6 field7 field8
1 text text1 segment1 31-Jan-13 2.70 0.21 1.44 1.29
2 text text1 segment1 01-May-13 0.70 2.90 0.76 0.38
56 text text3 segment2 01-May-14 -1.50 -1.97 -1.79 -3.51
当我按一栏这样做时,它会起作用:
for (j in 1:length(unique(InputData[,3]))) {
InputDataSubset <- InputData[InputData[,3] == unique(InputData[,3])[j],]
print(unique(InputData[,3])[j])
print(InputDataSubset)
}
如果我尝试通过几列来做到这一点:
for (j in 1:length(unique(InputData[,1:3]))) {
InputDataSubset <- InputData[InputData[,1:3] == unique(InputData[,1:3])[j,],]
print(unique(InputData[,3])[j])
print(InputDataSubset)
}
我收到错误消息:
Error in Ops.data.frame(InputData[, 1:3], unique(InputData[, 1:3])[j, :
‘==’ only defined for equally-sized data frames
如何解决这样的问题?提前致谢。
【问题讨论】:
-
split(DF, DF[, c("field1", "field2")]). -
也可以使用
dplyr::group_by。 -
或:
by(DF, DF[, c("field1", "field2")], FUN=function(df) df) -
谢谢大家。谢谢@parfait,这正是我所需要的。