我有以下数据框架:
ID A1 A2 A3 A4 B1 B2 B3 B4
1 ID1 1 2 1 1 1 1 2 2
2 ID2 2 2 1 1 2 NA 2 1
3 ID3 2 2 1 2 1 1 NA 2
4 ID4 1 1 1 1 1 NA NA 2
5 ID5 2 2 1 1 NA NA 2 NA
6 ID6 1 1 1 1 2 2 2 2
我想从满足每个A和B组合的特定条件的数据帧中提取行,这些是条件:
我就是这么写的:
A <- colnames(dataframe)[2:5]
# A = A1, A2, A3 and A4
B <- colnames(dataframe)[6:9]
# B = B1, B2, B3 and B4
for (a in A) {
for (b in B) {
PP <- dataframe[dataframe$a=='2' & dataframe$b=='2' , ]
PA <- dataframe[dataframe$a=='2' & dataframe$b=='1' , ]
AP <- dataframe[dataframe$a=='1' & dataframe$b=='2' , ]
AA <- dataframe[dataframe$a=='1' & dataframe$b=='1' , ]
print(head(PP)) #to have a preview
}
}
然而,新的数据帧是空的,我不明白为什么。理想情况下,第一个for循环(使用a=A1和b=B1)将输出:
PP:
ID A1 A2 A3 A4 B1 B2 B3 B4
2 ID2 2 2 1 1 2 NA 2 1
爸:
ID A1 A2 A3 A4 B1 B2 B3 B4
3 ID3 2 2 1 2 1 1 NA 2
美联社:
ID A1 A2 A3 A4 B1 B2 B3 B4
6 ID6 1 1 1 1 2 2 2 2
AA:
ID A1 A2 A3 A4 B1 B2 B3 B4
1 ID1 1 2 1 1 1 1 2 2
我希望有人能帮忙。谢谢。
发布于 2016-09-07 05:33:47
美元符号提取带来了一个问题。它不是用来传递变量的,就像在dataframe$a
中那样。因为a
不是真正的名称。您正在尝试将变量名传递给它。但是,该运算符将查找文字a
列,而不会找到它。试试dataframe[,a]
https://stackoverflow.com/questions/39370930
复制相似问题