簡體   English   中英

將二進制列聚合為 R 中具有不同級別的一列

[英]Aggregating binary columns into one column with different levels in R

我想知道是否有人可以幫忙。 我有以下數據集,其中 ID 已前往一些沒有 ID 重復的城市:

ID    London   Paris   Rome
1       Yes     No      Yes
2       No      No      Yes
3       No      Yes     Yes
4       No      Yes     No

並且我想添加一列,顯示 ID 去過的所有城市,以及顯示 ID 去過的城市數量的列,如下所示:

ID    London   Paris   Rome    All Cities      Count of Cities travelled
1       Yes     No      Yes    London, Rome                2
2       No      No      Yes     Rome                       1
3       No      Yes     Yes    Paris, Rome                 2
4       No      Yes     No     Paris                       1

我正在嘗試在R 中使用dplyr

非常感謝您提前:)

你可以試試:

library(dplyr)

df %>%
  rowwise %>%
  mutate(`All Cities` = toString(names(.[-1])[which(c_across(-ID) == 'Yes')]),
         `Count of Cities travelled` = sum(c_across(-ID) == 'Yes'))

輸出:

# A tibble: 4 x 6
# Rowwise: 
     ID London Paris Rome  `All Cities` `Count of Cities travelled`
  <int> <fct>  <fct> <fct> <chr>                              <int>
1     1 Yes    No    Yes   London, Rome                           2
2     2 No     No    Yes   Rome                                   1
3     3 No     Yes   Yes   Paris, Rome                            2
4     4 No     Yes   No    Paris                                  1

如果我們需要命名城市:

cities <- c('London', 'Paris', 'Rome')

df %>%
  rowwise %>%
  mutate(`All Cities` = toString(names(.[, cities])[which(c_across(all_of(cities)) == 'Yes')]),
         `Count of Cities travelled` = sum(c_across(all_of(cities)) == 'Yes'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM