[英]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.