【发布时间】:2015-09-18 08:42:58
【问题描述】:
我有一个大数据框架,其结构如下所示:
a <- c("hort", 3:8)
b <- c("hort", 2:5,"NA", "NA")
d <- c("hort", 1:3, "NA", "NA", "NA")
z <- c("hort", 4:8, "NA")
y <- c("hort", 1:2, "NA", "NA", "NA", "NA")
x <- c("hort", 1:4, "NA", "NA")
df <- as.data.frame(rbind(a,b,d,z,y,x))
df <- sapply(df, as.character)
df[df=="NA"] <- ""
V1 V2 V3 V4 V5 V6 V7
1 hort 3 4 5 6 7 8
2 hort 2 3 4 5
3 hort 1 2 3
4 hort 4 5 6 7 8
5 hort 1 2
6 hort 1 2 3 4
我想在单独的 data.frame 中检索从第二列开始计数时恰好具有四个值的行。在这种情况下,这将是第 2 行和第 6 行。所以输出看起来像这样
V1 V2 V3 V4 V5
1 hort 2 3 4 5
2 hort 1 2 3 4
我发现很少有关于检索满足条件的行的帖子,但都没有反映我的问题。 到目前为止,我想使用
subset(df,length (df[1:6,]==5))
但它不起作用
错误:“子集”必须是逻辑的)
我无法理解它,因为它对我来说似乎是一个逻辑表达式。另外,也许有人可以提出比设置整个 data.frame 更好的解决方案。
【问题讨论】:
-
如果 V2 到 V7 列中有 4 个值但位于不同列中会发生什么?预期的输出是什么?
-
这是个好问题。我拥有的 df 在具有同一行的值的列之间没有空格。所以在这种情况下不用担心。
标签: r