菜鸟到 R. 想弄清楚。我需要构建一个将新列添加到数据集开头的函数。这个新列是用户指定的其他列中值的串联。
想象一下这是名为 myDataSet 的数据集:
col_1 col_2 col_3 col_4
bat red 1 a
cow orange 2 b
dog green 3 c
用户可以像这样使用该函数:
addPrimaryKey(myDataSet, cols=c(1,3,4))
获取新数据集的结果,其中第 1、3 和 4 列连接到名为 ID 的列中并添加到开头,如下所示:
ID col_1 col_2 col_3 col_4
bat1a bat red 1 a
cow2b cow orange 2 b
dog4c dog green 3 c
这是我一直在编写的脚本,但我已经盯着它看了很长时间,我想我犯了一些错误。我无法弄清楚如何将参数中的列号正确地导入到粘贴函数中。
addPrimaryKey <- function(df, cols=NULL){
newVector = rep(NA, length(cols)) ##initialize vector to length of columns
colsN <- as.numeric(cols)
df <- cbind(ID=paste(
for(i in 1:length(colsN)){
holder <- df[colsN[i]]
holder
}
, sep=""), df) ##concatenate the selected columns and add as ID column to df
df
}
任何帮助将不胜感激。非常感谢
最佳答案
paste0
在 do.call
的帮助下工作正常:
do.call(paste0, mydf[c(1, 3, 4)])
# [1] "bat1a" "cow2b" "dog3c"
因此,您的功能可能类似于:
addPrimaryKey <- function(inDF, cols) {
cbind(ID = do.call(paste0, inDF[cols]),
inDF)
}
您可能还想查看
interaction
:interaction(mydf[c(1, 3, 4)], drop=TRUE)
# [1] bat.1.a cow.2.b dog.3.c
# Levels: bat.1.a cow.2.b dog.3.c
关于r - 连接列并将它们添加到数据框的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682462/