使用循环和dplyr的mutate分配动态变量名

时间:2017-07-25 00:03:52

标签: r dplyr mutate

我想将一个字符字段分成单个变量,一个字符串中的每个字符。

library(dplyr)
temp1 <- data.frame(a = c('dedefdewfe' , 'rewewqreqw'))


for(i in 1:10){

  temp1 <- temp1 %>% 
    mutate(paste('v' , i , ,sep = '') = substr(a , i , i))
}

结果数据框将包含11个变量,原始av1v10

1 个答案:

答案 0 :(得分:3)

tidyr::separate对此有好处。您不能拆分空字符串,但可以指定拆分位置......

library(tidyr)
library(dplyr)
temp1 %>% 
  mutate(b=a) %>%   ## make a copy
  separate(b,into=paste0("v",1:10),sep=1:9)

(可能更好的做法是使用nc <- nchar(temp1$a[1]),然后分别使用ncnc-1代替10,9)