使用dplyr中的字符类型条件进行总结

使用dplyr中的字符类型条件进行总结,r,dplyr,summarize,R,Dplyr,Summarize,我想计算一个国家单独列出的次数,以及与其他国家列出的次数 这是我的数据集的一部分: 我使用以下代码提取每个国家出现的次数 publication_countries <- address_countries2 %>% select(name_countries, n_countries) %>% unnest_tokens(word, name_countries) %>% group_by(word) %>% summarise(TP = n

我想计算一个国家单独列出的次数,以及与其他国家列出的次数

这是我的数据集的一部分:

我使用以下代码提取每个国家出现的次数

publication_countries <- address_countries2 %>% 
  select(name_countries, n_countries) %>% 
  unnest_tokens(word, name_countries) %>%
  group_by(word) %>% 
  summarise(TP = n())

 head(publication_countries)
 # A tibble: 6 x 2
    word          TP
    <chr>       <int>
   1 China         4
   2 Usa           2
   3 France        2
   4 India         2
   5 Jordan        1       
   6 Germany       1
但我得到了这个错误:

Error in summarise_impl(.data, dots) : 
  Evaluation error: no applicable method for 'groups' applied to an object of    class "character"
如果您有任何帮助,我们将不胜感激:


非常感谢

这里只有一个小问题。在我的完整数据样本中,n_国家的值从1到3不等,通过按n_国家搜索,我得到了三列。有没有办法合并任何不统一的列?很抱歉,我不理解你的问题。有时名称为“国家”的列中有两个以上的国家,例如,当3个国家n\u countries=3时。在使用代码时,这给了我三列。但是我只想要两列,一列用于所有单个国家,一列用于任何数量的国家。难道不可能将所有需要组合在一起的列进行变异(将它们加在一起形成一列)吗?只有一个小问题。在我的完整数据样本中,n_国家的值从1到3不等,通过按n_国家搜索,我得到了三列。有没有办法合并任何不统一的列?很抱歉,我不理解你的问题。有时名称为“国家”的列中有两个以上的国家,例如,当3个国家n\u countries=3时。在使用代码时,这给了我三列。但我只想要两列,一列代表所有单一国家,一列代表任何数量的国家。难道不可能将所有需要合并的列进行变异(即将它们相加以得到一列)吗?
dat%>% 
   select(name_countries, n_countries) %>% 
   unnest_tokens(word, name_countries) %>%
   group_by(word)%>%mutate(TP=n())%>%
   group_by(n_countries,word)%>%mutate(Tp1=n())%>%
   unique()%>%spread(n_countries,Tp1,0)
# A tibble: 6 x 4
# Groups:   word [6]
     word    TP   `1`   `2`
*   <chr> <int> <dbl> <dbl>
1   china     4     2     2
2  france     2     0     2
3 germany     1     0     1
4   india     2     2     0
5  jordan     1     0     1
6     usa     2     2     0
summarise(TP = n() , IP = count(word[n_countries=="1"])) 
Error in summarise_impl(.data, dots) : 
  Evaluation error: no applicable method for 'groups' applied to an object of    class "character"
dat%>% 
   select(name_countries, n_countries) %>% 
   unnest_tokens(word, name_countries) %>%
   group_by(word)%>%mutate(TP=n())%>%
   group_by(n_countries,word)%>%mutate(Tp1=n())%>%
   unique()%>%spread(n_countries,Tp1,0)
# A tibble: 6 x 4
# Groups:   word [6]
     word    TP   `1`   `2`
*   <chr> <int> <dbl> <dbl>
1   china     4     2     2
2  france     2     0     2
3 germany     1     0     1
4   india     2     2     0
5  jordan     1     0     1
6     usa     2     2     0