for循环迭代以在R中创建新列

萧安妮

我想对某些列而不是全部进行子串化。例如,如果我有一个数据集:

` data <- data.frame(A = c(100, 200, 300), 
               B = c('A50', 'B60', 'C70')
               c = c(900, 800, 700))

我想对A和B列进行子字符串化,但对C子字符串化。

  select_col <- c("A", "B")

 for col in select_col {
   newcolA = substr(colA, 1, 3)
   newcolB = substr(colB, 1, 3)
  }

如何正确编写for循环?我的实际数据集有数百列,而我有20多个要作为子字符串的列。

克莱桑

您可以sapply在列(或lapply的向量上使用

sapply(data[,select_col], substring, 1, 3)

     A     B    
[1,] "100" "A50"
[2,] "200" "B60"
[3,] "300" "C70"

更改列并将其存储在同一数据框中:

cbind(data, setNames(lapply(data[,select_col], substring, 1, 3), paste0("new", select_col)))
    A    B   c newA newB
1 100 A501 900  100  A50
2 200 B602 800  200  B60
3 300  C70 700  300  C70

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章