根据r中另一列的观测值创建新列

啤酒王

我在此专栏中有一个名为“ encuesta”的df

Orientación prioritaria
<chr>
Gastroenterología clinica;Endoscopia digestiva;Motilidad y Neurogastro
Gastroenterología clinica;Endoscopia digestiva;Motilidad y Neurogastro
Gastroenterología clinica;Endoscopia digestiva;Motilidad y Neurogastro
Gastroenterología clinica;Endoscopia digestiva
Motilidad y Neurogastro
Gastroenterología clinica;Motilidad y Neurogastro

我想根据以“;”分隔的值创建新列 在每一行

我已经尝试过这样的事情,例如:

encuesta$`Gastroenterología clínica` <- encuesta$`Orientación prioritaria` %in% str_detect(encuesta$`Orientación prioritaria`, regex("Gastroenterología"))

它创建了一个新列,Gastroenterología clínica但它对所有观察结果进行了评估,得出FALSE,我不明白为什么。

separate()tidyrtidyverse)中尝试这种方法

library(tidyverse)
#Separate
df2 <- df %>% separate(col = V1,into = c('a','b','c'),sep = ';')

输出:

                          a                       b                       c
1 Gastroenterología clinica    Endoscopia digestiva Motilidad y Neurogastro
2 Gastroenterología clinica    Endoscopia digestiva Motilidad y Neurogastro
3 Gastroenterología clinica    Endoscopia digestiva Motilidad y Neurogastro
4 Gastroenterología clinica    Endoscopia digestiva                    <NA>
5   Motilidad y Neurogastro                    <NA>                    <NA>
6 Gastroenterología clinica Motilidad y Neurogastro                    <NA>

使用了一些数据:

#Data
df <- structure(list(V1 = c("Gastroenterología clinica;Endoscopia digestiva;Motilidad y Neurogastro", 
"Gastroenterología clinica;Endoscopia digestiva;Motilidad y Neurogastro", 
"Gastroenterología clinica;Endoscopia digestiva;Motilidad y Neurogastro", 
"Gastroenterología clinica;Endoscopia digestiva", "Motilidad y Neurogastro", 
"Gastroenterología clinica;Motilidad y Neurogastro")), class = "data.frame", row.names = c(NA, 
-6L))

更新:为了使每个值一个变量在此处,代码:

#Code
df %>% separate_rows(V1,sep=';') %>%
  mutate(V=paste0('V',1:n())) %>%
  pivot_wider(names_from = V,values_from=V1)

输出:

# A tibble: 1 x 14
  V1      V2     V3      V4      V5    V6     V7     V8    V9     V10    V11   V12    V13    V14   
  <chr>   <chr>  <chr>   <chr>   <chr> <chr>  <chr>  <chr> <chr>  <chr>  <chr> <chr>  <chr>  <chr> 
1 Gastro~ Endos~ Motili~ Gastro~ Endo~ Motil~ Gastr~ Endo~ Motil~ Gastr~ Endo~ Motil~ Gastr~ Motil~

更新2:为了每个类都有一个变量,请尝试以下操作:

#Code 2
df %>% mutate(id=1:n()) %>% separate_rows(V1,sep=';') %>%
  #group_by(V1) %>%
  mutate(var=1) %>%
  pivot_wider(names_from = V1,values_from=var) %>%
  replace(is.na(.),0) %>% select(-id)

输出:

# A tibble: 6 x 3
  `Gastroenterología clinica` `Endoscopia digestiva` `Motilidad y Neurogastro`
                        <dbl>                  <dbl>                     <dbl>
1                           1                      1                         1
2                           1                      1                         1
3                           1                      1                         1
4                           1                      1                         0
5                           0                      0                         1
6                           1                      0                         1

如果需要总计,请尝试以下操作:

#Code 3
df %>% mutate(id=1:n()) %>% separate_rows(V1,sep=';') %>%
  #group_by(V1) %>%
  mutate(var=1) %>%
  pivot_wider(names_from = V1,values_from=var) %>% select(-id) %>%
  summarise_all(.funs = sum,na.rm=T)

输出:

# A tibble: 1 x 3
  `Gastroenterología clinica` `Endoscopia digestiva` `Motilidad y Neurogastro`
                        <dbl>                  <dbl>                     <dbl>
1                           5                      4                         5

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据另一列中的值创建新列

根据另一列的值创建新列

根据另一列的值创建新列

根据R中另一列中的唯一值创建批次的升序值,并批量添加新数据

根据另一列中的值创建新的r data.table列并进行分组

根据另一列的值在熊猫中创建新列

是否可以根据值在另一列中更改的时间来创建新列?

使用 map() 时出错:根据另一列中的值创建新的 Pandas 列

根据另一列中的字符串值创建新列

根据列表中的另一列内容创建新的列值

根据另一列中的值的最后两位数字创建新列

如何根据另一列 SQL 中的值创建具有计数值的新列

根据另一列熊猫的300条相邻行中的值创建新列

根据熊猫中另一列的值创建新列

跟进-根据熊猫中另一列的值创建新列

根据另一列 R 中的条件创建一个新列

根据前一列中的值创建新列

R根据另一列中的因素创建新列

根据R中的另一列创建类别列

根据 R 中另一列的条件,用相同的值填充整个新列

根据另一列和另一个表中的值创建一个新列

如果一列中的观测值与R中另一列的名称相等,则循环以分配值

在R中根据值以及另一列的频率使用dplyr创建列

从R中的另一列创建新列

如何迭代另一列中的嵌套字段以根据另一个值创建新列?

R函数根据同一列中的先前值创建新列

用R中另一列的值替换来自一列的多个观测值

根据 Pandas 中另一列中相似值的分组创建一个新列

根据熊猫中另一列上的值在数据框中创建一个新列