大家好,所以我正在处理一个大型数据框,记录特定月份的员工时间卡数据。我想打印出在三个不同月份记录最多三个零的整个员工队伍。我相信我需要使用apply函数:apply(Employee,1,...)其中Employee是数据框的名称,1允许它迭代每一行,但我不确定如何只选择那些其行中有三个或更少的零。我很感激帮助!
答案 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)
仅使用which
和rowSums
代替apply
的内容怎么样?
Employee[which(rowSums(Employee==0)<=3),]