如何对数据帧进行分组,然后计算R中的不同值
我在R中有一个数据帧,它有43个变量和80多行。我想根据一个变量(地理区域)对数据进行分组,然后计算一个变量的不同值(0、1、2、3和NAs的数量,等等) 我知道如何对数据帧进行分组,然后计算R中的不同值,r,tidyverse,summarize,R,Tidyverse,Summarize,我在R中有一个数据帧,它有43个变量和80多行。我想根据一个变量(地理区域)对数据进行分组,然后计算一个变量的不同值(0、1、2、3和NAs的数量,等等) 我知道tidyverse中的groupby和summary函数,我知道我可以使用“sum”和“mean”等函数,但我想计数 我试过了 est1% 按地区划分的组别%>% 汇总(计数) 数据如下所示: iso3 Country WHOregion WBIncomeGroup UrbanSanPol UrbanSa
tidyverse
中的groupby
和summary
函数,我知道我可以使用“sum”和“mean”等函数,但我想计数
我试过了
est1%
按地区划分的组别%>%
汇总(计数)
数据如下所示:
iso3 Country WHOregion WBIncomeGroup UrbanSanPol UrbanSanWom UrbanSanExt RuralSanPol RuralSanWom
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 AFG Afghanistan EMRO Low income 0 <NA> <NA> 1 1
2 ALB Albania EURO Upper middle income 1 0 0 1 0
3 ARG Argentina PAHO Upper middle income 1 0 0.5 1 0
4 AZE Azerbaijan EURO Upper middle income 1 1 0.5 1 1
5 BDI Burundi AFRO Low income 1 1 0.5 1 1
6 BFA Burkina Faso AFRO Low income 1 1 1 1 1
在这里输入代码
假设我有三列。第一个是国家名单(法国、德国等)。第二个是区域列表(亚洲、欧洲),第三个是每个国家的离散值(奥运金牌数量)。我想按区域对所有数据进行分组,并计算每个区域出现0、1和2的次数
从你在评论中所说的以及我所理解的:
解释:
df %>% select(continent,countries,medals) %>% group_by(continent,countries) %>% summarize(count =n())
另一种解释是:你想要的是每一个大陆以及它所赢得的不同数量的奖牌
这些数字是该国获得的奥运奖牌
df <- as.data.frame(matrix(c("Asia","Asia","Asia","Asia","Europe","Europe","India","China","Bangladesh","Japan","Spain", "Italy",6,3,4,4,3,3),ncol = 3))
df %>% group_by(V1,V3) %>% summarise(count= n()) %>% spread(V3,count)
df%groupby(V1,V3)%%>%summary(count=n())%%>%spread(V3,count)
给我一个输出
# A tibble: 2 x 4
# Groups: V1 [2]
V1 `3` `4` `6`
* <fctr> <int> <int> <int>
1 Asia 1 2 1
2 Europe 2 NA NA
#一个tible:2 x 4
#分组:V1[2]
V1`3``4``6`
*
1亚洲12 1
2欧洲2北美
试试这个;需要dplyr和tidyverse
distinct_cnt <- input_df %>%
gather(variable, value) %>%
group_by(variable) %>%
summarise(n_distinct(value))
distinct\u cnt%
聚集(变量,值)%>%
分组依据(变量)%>%
摘要(n_不同(值))
也许可以查看?表
?此外,如果您发布一些带有感兴趣的变量的样本数据和几行(不是完整的数据集,只是我们需要复制和理解您的问题的数据集),我们可以提供更好的响应。不确定您希望如何进行分组,但可能是这样的:lappy(split(mtcars,mtcars$cyl),function(x)lappy(x,table))
?用数据框替换mtcars
,用$region
替换$cyl
。要切换嵌套,lappy(mtcars[-2],函数(x)lappy(split(x,mtcars$cyl,table))
,其中2
是分组列的列索引。请用df:dput(head(df,10))运行此代码并粘贴输出,以便我们可以对示例代码运行测试。您发布的表没有帮助-没有人希望自己键入。请发布您的数据的dput。金戈的dput(头部(df,10))!你有,第二个选择就是我想要的。非常感谢。我真的很感激。我对R很陌生,我慢慢学会了一些技巧!
distinct_cnt <- input_df %>%
gather(variable, value) %>%
group_by(variable) %>%
summarise(n_distinct(value))