在R中分组两列并计数

huangapple go评论62阅读模式
英文:

group two columns and count in R

问题

我正在尝试使用数据框来进行简单的计数。例如,如果数据框如下所示:

> df
                             ID   lable     col1    col2 
												    
 1              Buckinghamshire       1        A       A      
 2 Cornwall and Isles of Scilly       2        B       B      
 3                        Devon       1        A       A      
 4                  Dunfermline       2        C       C      
 5                   Humberside       2        C       C      
 6                 Inner London       X        A       A      
 7                         Kent       X        A       A      
 8                    Kirkcaldy       1        C       C      
 9                   Lancashire       1        B       B      
10            Not known/missing       2        C       C      

期望的输出如下:

> df2
     name    group        1        2      X
1    col1        A     4647     4858    108
1    col1        B   120456   146864   3502       
1    col1        C      258       53    111
2    col2        A    12247     1202     66
2    col2        B     4585      258      1
2    col2        C    32158    15426    477

我该如何解决这个问题以获得期望的输出?

英文:

I am trying to do a simple counts with dataframe
For example, if the df is as below:

> df
                             ID   lable     col1    col2 
												    
 1              Buckinghamshire       1        A       A      
 2 Cornwall and Isles of Scilly       2        B       B      
 3                        Devon       1        A       A      
 4                  Dunfermline       2        C       C      
 5                   Humberside       2        C       C      
 6                 Inner London       X        A       A      
 7                         Kent       X        A       A      
 8                    Kirkcaldy       1        C       C      
 9                   Lancashire       1        B       B      
10            Not known/missing       2        C       C      

Desire output

> df2
     name    group        1        2      X
1    col1        A     4647     4858    108
1    col1        B   120456   146864   3502       
1    col1        C      258       53    111
2    col2        A    12247     1202     66
2    col2        B     4585      258      1
2    col2        C    32158    15426    477

How can I solve this so I can get desire output

答案1

得分: 0

这是您提供的代码的翻译:

问题不清晰。

lines="
ID, 标签, 列1, 列2
                  白金汉郡   ,    1    ,A,A      
     康沃尔和西西里群岛   ,    2    ,B,B      
                            德文   ,    1    ,A,A      
                      邓弗姆林   ,    2    ,C,C      
                       亨伯赛德    ,   2    ,C,C"
con <- textConnection(lines)
data <- read.csv(con)
data$col2=trimws(data$col2)

library(tidyr)
library(dplyr)
temp=gather(data, key="name", value="group",3:4)

temp2=temp[,c(2,3,4)] %>%
  group_by(name, group, label) %>%  summarise(count=n())

spread(temp2, key="label", value="count")

结果:

      名称  组别   `1`   `2`
      <chr> <chr> <int> <int>
    1 列1  A         2    NA
    2 列1  B        NA     1
    3 列1  C        NA     2
    4 列2  A         2    NA
    5 列2  B        NA     1
    6 列2  C        NA     2
英文:

The question is not clear.

lines=&quot;
ID, label, col1, col2
              Buckinghamshire   ,    1    ,A,A      
 Cornwall and Isles of Scilly   ,    2    ,B,B      
                        Devon   ,    1    ,A,A      
                  Dunfermline   ,    2    ,C,C      
                   Humberside    ,   2    ,C,C&quot;
con &lt;- textConnection(lines)
data &lt;- read.csv(con)
data$col2=trimws(data$col2)

library(tidyr)
library(dplyr)
temp=gather(data, key=&quot;name&quot;, value=&quot;group&quot;,3:4)

temp2=temp[,c(2,3,4)] %&gt;%
  group_by(name, group, label) %&gt;%  summarise(count=n())

spread(temp2, key=&quot;label&quot;, value=&quot;count&quot;)

Result:

  name  group   `1`   `2`
  &lt;chr&gt; &lt;chr&gt; &lt;int&gt; &lt;int&gt;
1 col1  A         2    NA
2 col1  B        NA     1
3 col1  C        NA     2
4 col2  A         2    NA
5 col2  B        NA     1
6 col2  C        NA     2

huangapple
  • 本文由 发表于 2023年2月16日 14:57:53
  • 转载请务必保留本文链接:https://go.coder-hub.com/75468784.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定