【发布时间】:2023-03-09 01:34:01
【问题描述】:
我有一个这样的 CSV,保存为 R 中名为 df1 的对象。
X Y Z Year
0 2 4 2014
3 1 3 2014
5 4 0 2014
0 3 0 2014
2 1 0 2015
我想:
计算 2014 年没有“0”的每一列。例如,对于 X 列,计数 = 2(不是 3,因为我只想要 2014 年的数据)。对于 Y 列,计数为 4。对于 Z 列,计数为 1。
对每一列的所有计数求和
这是我尝试过的:
count_total <- sum(df1$x != 0 &
df1$y != 0 &
df1&z != 0 &
df1$Year == 2014)
count_total
我希望输出只是 1(即 df 中的第二行没有 0)
但是,这与我在 excel 上的计数不一致。在excel中是这样的:
=COUNTIFS('df1'!$A$2:$A$859,"<>0",'df1'!$B$2:$B$859,"<>0",
'df1'!$C$2:$C$859,"<>0",'df1'!$D$2:$D$859,2014)
想知道我是否在 R 上输入错误?我是 dyplr 用户,但在 google 上找不到特别有用的东西。
非常感谢!
【问题讨论】:
-
您的预期输出 1 如何表示 df 中的第二行没有 0?
-
澄清一下,输出意味着有 1 行没有 0。
-
类似这样的东西:
colSums(d[d$Year == 2014, 1:3] != 0)? -
作为记录,请注意R FAQ 7.31。您可能需要使用
sum(abs(df1$x) < 0.001, abs(df1$y) < 0.001, ...)(或您需要的任何机制......关键是当条件合适时,它可以显示为0 != 0)。 -
您的“我想:”和“我希望输出为:”部分具有误导性并且彼此不一致。
标签: r