相关疑难解决方法(0)

dplyr:将计数出现放入新变量中

想了解一下dplyr代码,但无法弄清楚这一点.见过这里所描述的许多变量(一个类似的问题,总结因素的计数与dplyr把值出现次数的计数横行到新的变数,如何做到在R里面有dplyr? ),但我的任务就是略小.
给定一个数据框,如何计算变量的频率并将其放在一个新变量中.

set.seed(9)
df <- data.frame(
    group=c(rep(1,5), rep(2,5)),
    var1=round(runif(10,1,3),0))
Run Code Online (Sandbox Code Playgroud)

然后我们有:

>df
   group var1
1      1    1
2      1    1
3      1    1
4      1    1
5      1    2
6      2    1
7      2    2
8      2    2
9      2    2
10     2    3
Run Code Online (Sandbox Code Playgroud)

想要第三列指示每组(group)var1发生多少次,在这个例子中,这将是:count =(4,4,4,4,1,1,3,3,3,1).我试过 - 没有成功 - 比如:

df %>%  group_by(group) %>% rowwise() %>% do(count = nrow(.$var1))
Run Code Online (Sandbox Code Playgroud)

解释非常感谢!

r dplyr

29
推荐指数
4
解决办法
4万
查看次数

计算列中的出现次数并在R中创建变量

我是R的新手,我有一个名为"CT"的data.frame,其中包含一个名为"ID"的列,其中包含数百个不同的标识号(这些是患者).大多数数字出现一次,但有些出现两次或三次(因此,在不同的行中).在CT data.frame中,我想插入一个名为"countID"的新变量,该变量将指示这些特定患者的出现次数(多个记录应该仍然出现几次).在阅读本论坛后,我尝试了两种不同的策略:第一种策略:

CT <- cbind(CT, countID=sequence(rle(CT.long$ID)$lengths)
Run Code Online (Sandbox Code Playgroud)

但这不起作用,我得到一个计数.第二个策略:创建一个包含两列的数据框(一个是ID,一个是计数),并将此数据框与CT匹配:

tabs <- table(CT.long$ID)
out <- data.frame(item=names(unlist(tabs)),count=unlist(tabs)[],stringsAsFactors=FALSE)
rownames(out) = c()
head(out)

# item    count
# 1 1.312     1
# 2 1.313     2
# 3 1.316     1
# 4 1.317     1
# 5 1.321     1
# 6 1.322     1
Run Code Online (Sandbox Code Playgroud)

所以这工作正常,但我不能融化两个data.frames:"out"和"CT"之间的行数不匹配(当然,行数较少).也许某人有一个优雅的解决方案,可以直接在data.frame CT中添加出现次数,或者正确匹配两个data.frames?丹尼斯,提前谢谢

r count

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

r ×2

count ×1

dplyr ×1