gpt4 book ai didi

r - 将 bool 指标列转换为单因子列

转载 作者:行者123 更新时间:2023-12-04 11:54:00 27 4
gpt4 key购买 nike

几年前有人问过类似的问题 here .

我的设置有点不同。我的指标变量不是“真正的”虚拟变量,因为它们重叠。

我想做以下事情:

# fake data
library(tibble)
dat <- tribble(
~"a", ~"b", ~"c",
0, 0, 0,
1, 0, 0,
1, 1, 1
)
dat
#> # A tibble: 3 x 3
#> a b c
#> <dbl> <dbl> <dbl>
#> 1 0 0 0
#> 2 1 0 0
#> 3 1 1 1

# desired data
desired_col <- c("none", "a", "a,b,c")
cbind(dat, desired_col)
#> a b c desired_col
#> 1 0 0 0 none
#> 2 1 0 0 a
#> 3 1 1 1 a,b,c

创建于 2018-10-22 由 reprex package (v0.2.0)。

请注意,列名被粘贴为 desired_col 中的字符值。 .如果不存在值,则值 == none .如果存在多个值,则值用 , 分隔。 .

最佳答案

这是使用 tidyverse 函数的一种方法

library(tibble)
library(dplyr)
library(tidyr)
dat %>%
rowid_to_column() %>% # keep data for each row together
gather("col", "val", -rowid) %>%
mutate(rowid=factor(rowid)) %>%
filter(val==1) %>%
group_by(rowid) %>%
summarize(desired=paste(col, collapse=",")) %>% #collapse values
complete(rowid, fill = list(desired="none")) # add "none" for empty groups

# rowid desired
# <fct> <chr>
# 1 1 none
# 2 2 a
# 3 3 a,b,c

基本思想涉及 reshape 数据,以便我们可以运行组函数,而不是在 data.frame 的行上运行函数,这不是那么容易。

关于r - 将 bool 指标列转换为单因子列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52932243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com