我有一个像这样的数据框: df
ID Black red blue green
1 0 1 1 1
2 0 0 2 1
3 0 5 1 2
4 0 0 1 2
5 0 0 1 2
使用此数据,如何计算具有任何数字的列而不管实际的数字是多少?有什么办法吗?
我尝试了rowSums(df)
,但结果不是我想要的。
我想要的输出是:
ID Black red blue green count
1 0 1 1 1 3
2 0 0 2 1 2
3 0 5 1 2 3
4 0 0 1 2 2
5 0 0 1 2 2
提前谢谢!
答案 0 :(得分:2)
我认为这应该对您有用
for (int a = 0; a < ls.size(); a++)
{
// Get first element
String firstE = ls.get(a);
// Get corresponding vl elements
List<String> vls = vl.get(a);
// Now print the elements
// The first element of vl should be preceeded by the corresponding element in ls
// The others by the predecessor in the same array
for (int b = 0; b < vls.size(); b++)
{
System.out.print("[");
if (b == 0)
System.out.print(firstE);
else
System.out.print(vls.get(b - 1));
System.out.println(", " + vls.get(b) + "]");
}
}
答案 1 :(得分:1)
另一种解决方案:
library(dplyr)
data <-
data.frame(Black = rep(0, 5),
Red = c(1,0,5,0,0),
Blue = c(1,2,1,1,1),
Green = c(1,1,2,2,2)
)
data$count <-
data %>%
apply(2, as.logical) %>%
rowSums
这产生的结果与ccharles的回答相同,但是利用了我认为广泛有用的技巧。通过将所有值强制转换为逻辑类(即TRUE
或FALSE
),可以将所有零折叠为FALSE
,将其他任何数字折叠为TRUE
。数值函数将逻辑值视为TRUE = 1
和FALSE = 0
,因此您可以使用rowSums()
获取每一行的计数。