总行数不包含因子且值不为零
Total rows does not contain a factor and the value is not zero
我有以下数据
path value
1 b,b,a,c 3
2 c,b 2
3 a 10
4 b,c,a,b 0
5 e,f 0
6 a,f 1
df
df <- data.frame (path= c("b,b,a,c", "c,b", "a", "b,c,a,b" ,"e,f" ,"a,f"), value = c(3,2,10,0,0,1))
我想计算我没有一个因数并且值不为零的总数。所以我想要的输出将是:
#desiored output
path value
1: b 2
2: a 1
3: c 2
4: e 4
5: f 3
例如,对于a
它显示我们没有的总数a
并且值不为零等于1。在第2行中只有一次我们没有a
且值不为零。 (希望清楚,如果需要更多示例,请告诉我)
我尝试了以下代码,但 b
的输出是错误的。有谁知道为什么?
total <- sum(df$value != 0)
library (splitstackshape)
#total number of total minus total number that a value is not zero
output <-cSplit(df, "path", ",", 'long')[, .(value=total - sum(value!=0)), .(path)]
output
此代码导致以下输出,这对于 b
是不正确的
path value
1: b 1
2: a 1
3: c 2
4: e 4
5: f 3
将因子读入 facs
,然后使用 grep 将它们取出并计数:
facs <- unique(scan(textConnection(as.character(df$path)), what = "", sep = ","))
data.frame(path = facs,
value = colSums( !sapply(facs, grepl, as.character(df$path)) & df$value != 0 ))
给予:
path value
b b 2
a a 1
c c 2
e e 4
f f 3
我有以下数据
path value
1 b,b,a,c 3
2 c,b 2
3 a 10
4 b,c,a,b 0
5 e,f 0
6 a,f 1
df
df <- data.frame (path= c("b,b,a,c", "c,b", "a", "b,c,a,b" ,"e,f" ,"a,f"), value = c(3,2,10,0,0,1))
我想计算我没有一个因数并且值不为零的总数。所以我想要的输出将是:
#desiored output
path value
1: b 2
2: a 1
3: c 2
4: e 4
5: f 3
例如,对于a
它显示我们没有的总数a
并且值不为零等于1。在第2行中只有一次我们没有a
且值不为零。 (希望清楚,如果需要更多示例,请告诉我)
我尝试了以下代码,但 b
的输出是错误的。有谁知道为什么?
total <- sum(df$value != 0)
library (splitstackshape)
#total number of total minus total number that a value is not zero
output <-cSplit(df, "path", ",", 'long')[, .(value=total - sum(value!=0)), .(path)]
output
此代码导致以下输出,这对于 b
path value
1: b 1
2: a 1
3: c 2
4: e 4
5: f 3
将因子读入 facs
,然后使用 grep 将它们取出并计数:
facs <- unique(scan(textConnection(as.character(df$path)), what = "", sep = ","))
data.frame(path = facs,
value = colSums( !sapply(facs, grepl, as.character(df$path)) & df$value != 0 ))
给予:
path value
b b 2
a a 1
c c 2
e e 4
f f 3