在R中打印特定行

时间:2014-06-20 00:39:42

标签: r

大家好,所以我正在处理一个大型数据框,记录特定月份的员工时间卡数据。我想打印出在三个不同月份记录最多三个零的整个员工队伍。我相信我需要使用apply函数:apply(Employee,1,...)其中Employee是数据框的名称,1允许它迭代每一行,但我不确定如何只选择那些其行中有三个或更少的零。我很感激帮助!

2 个答案:

答案 0 :(得分:3)

您可以使用rowSums()。这是一个假数据的例子。

> d <- data.frame(X1 = c(0, 1, 0, 0), X2 = c(0, 2, 2, 0), 
                  X3 = c(0, 2, 0, 0), X4 = c(3, 0, 0, 0))
> d
#   X1 X2 X3 X4
# 1  0  0  0  3
# 2  1  2  2  0
# 3  0  2  0  0
# 4  0  0  0  0

我们可以为那些逻辑值为x == 0的行总和为3或更小的行进行子集化:

> d[rowSums(d == 0, na.rm = TRUE) <= 3, ]
#   X1 X2 X3 X4
# 1  0  0  0  3
# 2  1  2  2  0
# 3  0  2  0  0

答案 1 :(得分:1)

仅使用whichrowSums代替apply的内容怎么样?

Employee[which(rowSums(Employee==0)<=3),]