【发布时间】:2018-06-28 10:14:39
【问题描述】:
我有下表:
FN LN LN1 LN2 LN3 LN4 LN5
a b b x x x x
a c b d e NA NA
a d c a b x x
a e b c d x e
我正在过滤 LN1 到 LN5 中存在 LN 的记录。
我使用的代码:
testFilter = filter(test, LN %in% c(LN1, LN2, LN3, LN4, LN5))
结果不是我所期望的:
ï..FN LN LN1 LN2 LN3 LN4 LN5
1 a b b x x x x
2 a c b d e <NA> <NA>
3 a d c a b x x
4 a e b c d x e
我知道c(LN1, LN2, LN3, LN4, LN5) 给出:"b" "b" "c" "b" "x" "d" "a" "c" "x" "e" "b" "d" "x" NA "x" "x" "x" NA "x" "e" 并且知道这就是错误所在。
理想情况下,我只想返回第一条和第四条记录。
FN LN LN1 LN2 LN3 LN4 LN5
a b b x x x x
a e b c d x e
我只想使用列名过滤它们。这只是 540 万条记录的一个子集。
【问题讨论】:
-
我猜你的意思是
subset不是filter(用于时间序列)。LN是一个列名,如LN1到LN5所以你的“条件”不能工作。你到底想做什么? -
我想显示在对应的 LN1 或 LN2 或 LN3 或 LN4 或 LN5 中存在 LN 值的记录。感谢您及时的回复!在第一条记录中,'b' 出现在 LN1 中。因此,显示第一条记录。在第二条记录中,'c' 不在 LN1/LN2/3/4/5 中。所以,不要显示它。在第三条记录中,'d' 不在 LN1/LN2/3/4/5 中。所以,不要显示它。在第 4 条记录中,“e”出现在 LN5 中。所以,展示它。