相关疑难解决方法(0)

计算每个组中的行数

我有一个数据帧,我想计算每组内的行数.我通常使用该aggregate函数对数据求和如下:

df2 <- aggregate(x ~ Year + Month, data = df1, sum)
Run Code Online (Sandbox Code Playgroud)

现在,我想计算观察结果,但似乎无法找到适当的论据FUN.直觉上,我认为它会如下:

df2 <- aggregate(x ~ Year + Month, data = df1, count)
Run Code Online (Sandbox Code Playgroud)

但是,没有这样的运气.

有任何想法吗?


一些玩具数据:

set.seed(2)
df1 <- data.frame(x = 1:20,
                  Year = sample(2012:2014, 20, replace = TRUE),
                  Month = sample(month.abb[1:3], 20, replace = TRUE))
Run Code Online (Sandbox Code Playgroud)

aggregate r dataframe r-faq

102
推荐指数
11
解决办法
21万
查看次数

如何按组向R data.frame添加唯一值的计数

我希望通过对第二个变量进行分组来计算唯一值的数量,然后将计数添加到现有data.frame作为新列.例如,如果现有数据框如下所示:

  color  type
1 black chair
2 black chair
3 black  sofa
4 green  sofa
5 green  sofa
6   red  sofa
7   red plate
8  blue  sofa
9  blue plate
10 blue chair
Run Code Online (Sandbox Code Playgroud)

我想为每个添加数据中存在color的唯一计数types:

  color  type unique_types
1 black chair            2
2 black chair            2
3 black  sofa            2
4 green  sofa            1
5 green  sofa            1
6   red  sofa            2
7   red plate            2
8  blue  sofa            3
9  blue plate            3
10 blue chair …
Run Code Online (Sandbox Code Playgroud)

aggregate r unique count

53
推荐指数
3
解决办法
6万
查看次数

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万
查看次数

基于每组行数的子集数据帧

我有这样的数据,其中一些"名称"出现超过3次:

df <- data.frame(name = c("a", "a", "a", "b", "b", "c", "c", "c", "c"), x = 1:9)

  name x
1    a 1
2    a 2
3    a 3
4    b 4
5    b 5
6    c 6
7    c 7
8    c 8
9    c 9
Run Code Online (Sandbox Code Playgroud)

我希望根据"name"变量的每个级别内的行数(观察值)对数据进行子集化(过滤).如果某个级别的"名称"出现超过3次,我想删除属于该级别的所有行.

我写了这段代码,但无法让它工作.

  name x
1    a 1
2    a 2
3    a 3
4    b 4
5    b 5
Run Code Online (Sandbox Code Playgroud)

r subset dataframe r-faq

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

将因子的计数添加到数据帧

我有一个数据框,每行是关于瞳孔的观察.数据框中的一个向量是学校的id.我已经获得了一个新的载体,每个学校的计数如下:

tbsch <- table(dt$school)
Run Code Online (Sandbox Code Playgroud)

现在我想将相关的计数值添加到每一行dt.我已经使用for()循环遍历每一行dt并创建一个包含相关计数的新向量并最终使用cbind()它来添加它dt,但我认为这是非常低效的.有这么聪明/简单的方法吗?

r dataframe

3
推荐指数
1
解决办法
3327
查看次数

添加具有其他计数的列

我有一个数据框df,看起来像以下内容,其中gender列是一个factor具有两个级别的:

gender    age
m         18
f         14
m         18
m         18
m         15
f         15
Run Code Online (Sandbox Code Playgroud)

我想添加一个新列count,该列仅反映该gender级别在数据框中出现的次数。因此,最终,数据框将如下所示:

gender    age    count
m         18     4
f         14     2
m         18     4
m         18     4
m         15     4
f         15     2
Run Code Online (Sandbox Code Playgroud)

我知道我可以做得到table(df$gender)该因子出现的次数,但是我不知道如何将这些结果转换为中的新列df。我想知道如何使用该table功能-还是有更好的方法来实现我的新专栏?

r

2
推荐指数
2
解决办法
8731
查看次数

如何计算而不在R中聚合

我在R中有一个大表,需要计算其中一列中值的出现次数,另外将计数放在它自己的列中.没有聚合.

所以,如果我有:

var
23456
34567
45678
23456
etc
Run Code Online (Sandbox Code Playgroud)

我的输出应该是:

var      count
23456     2
34567     1
45678     1
23456     2
etc
Run Code Online (Sandbox Code Playgroud)

我已经真正阅读了所有的线程,但似乎无法在没有聚合的情况下找到这样做的方法.我需要的是相当于excel的count(A1:A4;A1).

aggregate r count

1
推荐指数
1
解决办法
127
查看次数

计算重复出现的次数 [R]

df <- data.frame(name=c('black','black','black','red','red'),
                 type=c('chair','chair','sofa','sofa','sofa'),
                 num=c(4,4,12,4,6))
Run Code Online (Sandbox Code Playgroud)

对于每一行,我想计算“type”与该行的 num 值一起出现的次数,然后创建一个新列。所以对于第一行,“chair”和“num”在数据集中出现了两次,所以它被分配了一个 2。对于第二行,同样的事情。对于第 3 行,沙发出现一次,值为 12。

df
#    name  type num count
# 1 black chair   4     2
# 2 black chair   4     2
# 3 black  sofa  12     1
# 4   red  sofa   4     1
# 5   red  sofa   6     1
Run Code Online (Sandbox Code Playgroud)

r dataframe

1
推荐指数
1
解决办法
6286
查看次数

包括根据频率的值

我有一个像这样的data.frame:

24.8     
23.2     
22.8        
22.5     
22.5      
22.4     
22.4      
22.4      
22.3     
22.2     
22.2      
22.2      
22      
21.9      
21.9     
21.8    
Run Code Online (Sandbox Code Playgroud)

我想根据频率添加一个值,以得到以下输出:

24.8      1      
23.2      1      
22.8      1      
22.5      2      
22.5      2     
22.4      3       
22.4      3        
22.4      3        
22.3      1     
22.2      3          
22.2      3         
22.2      3        
22        1                
21.9      2           
21.9      2         
21.8      1
Run Code Online (Sandbox Code Playgroud)

怎么做到这一点?换句话说,由于28.8发生一次,它的值为1; 由于22.5发生两次,它将具有值2,依此类推.

r dataframe

0
推荐指数
2
解决办法
140
查看次数

计算 R data.table 中的行数

对于示例数据框:

library(data.table)
df = structure(list(country = c("AT", "AT", "AT", "BE", "BE", "BE", 
                             "DE", "DE", "DE", "DE", "DE", "DE", "DE", "DE", "DE", "DE", "DE", 
                             "DE", "DE", "DE"), level = c("1", "1", "1", "1", "1", "1", "1", 
                                                          "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1"
                             ), region = c("AT2", "AT1", "AT3", "BE2", "BE1", "BE3", "DE4", 
                                           "DE3", "DE9", "DE7", "DE1", "DEE", "DEG", "DE2", "DED", "DEB", 
                                           "DEA", "DEF", "DE6", "DE8"), N = c("348", "707", "648", "952", 
                                                                              "143", "584", "171", …
Run Code Online (Sandbox Code Playgroud)

r data.table

0
推荐指数
1
解决办法
5302
查看次数

标签 统计

r ×10

dataframe ×5

aggregate ×3

count ×2

r-faq ×2

data.table ×1

dplyr ×1

subset ×1

unique ×1