gpt4 book ai didi

r - 连接列并将它们添加到数据框的开头

转载 作者:行者123 更新时间:2023-12-04 10:56:53 24 4
gpt4 key购买 nike

菜鸟到 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
}

任何帮助将不胜感激。非常感谢

最佳答案

paste0do.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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com