R:计算案件的价值

时间:2016-03-09 14:48:54

标签: r matrix count

在我的数据集中,我有6个变量,每个变量有四个可能的值(1,10,100或NA)

set.seed(1)
x <- setNames(
  as.data.frame(replicate(6, sample(c(1,10,100,NA), 10, replace = TRUE))),
  letters[c(1:5,7)])

我想计算每个值在所有六个变量中出现的频率,导致三个刻度(No_of_1s,No_of_10s,No_of_100s)都在0到6之间。

到目前为止,我使用了这个

All<-data.frame(a,b,c,d,e,g)
All_table<-apply(All,MARGIN=1,table)

给出了表格中每种情况的1s,10s和100s的计数。

我现在正在考虑使用

No_of_1s<-All_table[,1]

创建我需要的变量。但是,似乎All_table不为空行创建零,而是在这种情况下省略它们,导致巨大的混乱。

有谁知道如何调整这个?

这个问题的解决方案可能非常简单,但我似乎无法自己解决这个问题。

2 个答案:

答案 0 :(得分:3)

我愿意(感谢@akrun)......

var percentComplete = elapsedTime / animationDuration;

或使用reshape2包

table(id = seq(nrow(x))[row(x)], unlist(x), useNA= "ifany")

如果您的数据遵循此模式更高的数字,您可能还需要查看library(reshape2) x$id = seq(nrow(x)) table(melt(x, id="id")[, c("id","value")], useNA="ifany") value id 1 10 100 <NA> 1 1 3 0 2 2 2 1 2 1 3 0 2 3 1 4 3 1 1 1 5 2 1 1 2 6 1 2 1 2 7 2 1 1 2 8 1 2 2 1 9 0 1 4 1 10 1 3 1 1

答案 1 :(得分:2)

您可以使用类似

的内容
No_of_10s <- rowSums(All == 10)
No_of_100s <- rowSums(All == 100)

我在data.frame中对此进行了测试,如下所示:

x <- data.frame(a = sample(c(1,10,100), 10, replace = TRUE), b = sample(c(1,10,100), 10, replace = TRUE), c=sample(c(1,10,100), 10, replace = TRUE), d=sample(c(1,10,100), 10, replace = TRUE), e=sample(c(1,10,100), 10, replace = TRUE), g=sample(c(1,10,100), 10, replace = TRUE))
rowSums(x == 10)
# answer