我有一个R数据框,其中的列如下所示
codes
111:222:333
222
111:222
我想将codes
列展开为单个二进制列,如下所示:
111 222 333
1 1 1
0 1 0
1 1 0
我尝试使用strsplit
将codes
列转换为字符列表,然后取消嵌套codes
列并希望执行pivot_wider
,但似乎无法对具有重复标识列的列执行此操作。
df <- df %>%
mutate(codes = strsplit(codes, ":", TRUE))
unnest(codes) %>%
mutate(value = 1) %>%
pivot_wider(names_from = codes,
values_from = value,
values_fill = 0)
3条答案
按热度按时间92vpleto1#
使用
separate_rows
的另一种方法:虽然这会给予我们一个表,所以如果我们需要一个 Dataframe ,我们应该使用
pivot_wider
而不是table
。数据:
9ceoxa922#
将
id
列添加到unnest
之前的 Dataframe 中hmae6n7t3#
我们可以从
fastDummies
使用dummy_cols
注意:列名以字母开头可能更好。如果我们只想使用值
数据