我想对某些列而不是全部进行子串化。例如,如果我有一个数据集:
` 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] 删除。
我来说两句