将列传播到单热编码模式中
Spread colum into one-hot encoded pattern
我有一个具有以下模式的数据框:
df <- tibble(ID = c(1, 1, 1, 2, 2), key = c("a", "b", "b", "c", "c"), value = c("k1", "k3", "k1", "k2", "k5"))
ID key value
<dbl> <chr> <chr>
1 1 a k1
2 1 b k3
3 1 b k1
4 2 c k2
5 2 c k5
我需要的是对每个 ID
,将 key
相等的行组合在一起,然后在所有可能的唯一值中以单热编码方式对 value
进行编码列 value
。那就是我想要的s.th。喜欢
ID key k1 k2 k3 k5
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 1 a 1 0 0 0
2 1 b 1 0 1 0
3 2 c 0 1 0 1
如果有帮助,我可以提供一个可能的值列表,例如 possible_values = c("k1", "k2", "k3", ...)
您可以调整 pivot_wider()
中的那些参数来实现它。
library(tidyr)
pivot_wider(df,
names_from = value, names_sort = TRUE,
values_from = value, values_fn = length, values_fill = 0)
# A tibble: 3 × 6
ID key k1 k2 k3 k5
<dbl> <chr> <int> <int> <int> <int>
1 1 a 1 0 0 0
2 1 b 1 0 1 0
3 2 c 0 1 0 1
我有一个具有以下模式的数据框:
df <- tibble(ID = c(1, 1, 1, 2, 2), key = c("a", "b", "b", "c", "c"), value = c("k1", "k3", "k1", "k2", "k5"))
ID key value
<dbl> <chr> <chr>
1 1 a k1
2 1 b k3
3 1 b k1
4 2 c k2
5 2 c k5
我需要的是对每个 ID
,将 key
相等的行组合在一起,然后在所有可能的唯一值中以单热编码方式对 value
进行编码列 value
。那就是我想要的s.th。喜欢
ID key k1 k2 k3 k5
<dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 1 a 1 0 0 0
2 1 b 1 0 1 0
3 2 c 0 1 0 1
如果有帮助,我可以提供一个可能的值列表,例如 possible_values = c("k1", "k2", "k3", ...)
您可以调整 pivot_wider()
中的那些参数来实现它。
library(tidyr)
pivot_wider(df,
names_from = value, names_sort = TRUE,
values_from = value, values_fn = length, values_fill = 0)
# A tibble: 3 × 6
ID key k1 k2 k3 k5
<dbl> <chr> <int> <int> <int> <int>
1 1 a 1 0 0 0
2 1 b 1 0 1 0
3 2 c 0 1 0 1