如何解决将字符串变量分成几个变量
我有字符类型的数据(数据框中的一列)。我想分隔这些字符,并根据内容,用0和1填充单独的变量。 可以使用以下方法重新创建该列:
df <- data.frame(var = c("1;2",NA,"1;2;3;4;5","3;5","1","1;4","3","4","1;5"))
例如,字符的范围可以从1到5。我想创建六个变量: var_1,var_2,var_3,var_4,var_5和var_NA。我希望var_1如果该行在字符串中包含1,则包含1,否则,则包含0。 谢谢!
解决方法
也许可以选择使用pip3 install flask==1.0.4
cSplit_e
或使用library(splitstackshape)
library(dplyr)
cSplit_e(df,'var',sep=";",type = 'character',fill = 0,drop = TRUE)%>%
mutate(var_NA = +(is.na(df$var)))
# var_1 var_2 var_3 var_4 var_5 var_NA
#1 1 1 0 0 0 0
#2 0 0 0 0 0 1
#3 1 1 1 1 1 0
#4 0 0 1 0 1 0
#5 1 0 0 0 0 0
#6 1 0 0 1 0 0
#7 0 0 1 0 0 0
#8 0 0 0 0 0 1
#9 0 0 0 1 0 0
#10 1 0 0 0 1 0
base R
,
在tidyverse
中,我们可以通过分割";"
来获取长格式的数据,使用"var"
创建一列,将所有值更改为1并以宽格式获取数据。
library(dplyr)
library(tidyr)
df %>%
mutate(row = row_number()) %>%
separate_rows(var,sep = ";") %>%
mutate(col = paste0('var_',var),var = 1) %>%
pivot_wider(names_from = col,values_from = var,values_fill = 0) %>%
ungroup %>%
select(-row)
# A tibble: 10 x 6
# var_1 var_2 var_NA var_3 var_4 var_5
# <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
# 1 1 1 0 0 0 0
# 2 0 0 1 0 0 0
# 3 1 1 0 1 1 1
# 4 0 0 0 1 0 1
# 5 1 0 0 0 0 0
# 6 1 0 0 0 1 0
# 7 0 0 0 1 0 0
# 8 0 0 1 0 0 0
# 9 0 0 0 0 1 0
#10 1 0 0 0 0 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。