gpt4 book ai didi

r - 合并 R 中的两列,同时当其他列中不存在值时进行替换

转载 作者:行者123 更新时间:2023-12-04 12:09:50 26 4
gpt4 key购买 nike

我想合并数据集的两列,这两列的性质是非此即彼,即如果一个值存在于一列中,则它不会出现在其他列中。我尝试过这些

temp<-list(a=1:3,b=10:14)
paste(temp$a,temp$b)

输出

"1 10" "2 11" "3 12" "1 13" "2 14"

还有这个

 temp<-list(a=1:3,b=10:14,c=20:25)
temp<-within(temp,a <- paste(a, b, sep=''))

输出

temp$a
[1] "110" "211" "312" "113" "214"

但我正在寻找的是在值不存在时替换它们。例如 temp$a 只有 1:3 和 temp$b 有 10:14 ,即两个额外的值 - 所以我希望我的答案是

1_10 2_11 3_12 _13 _14

编辑 -请注意我不希望列ca$b连接

最佳答案

使用stri_list2matrix,我们可以用''填充长度较短的列表元素,并使用paste .

library(stringi)
do.call(paste, c(as.data.frame(stri_list2matrix(temp, fill='')), sep='_'))
#[1] "1_10" "2_11" "3_12" "_13" "_14"

stri_list2matrix(temp, fill='') 在填充 中较短的列表元素后将 list 转换为 matrix长度''。将其转换为 data.frame (as.data.frame) 并使用 do.call(pastepaste每行中的元素由 _ 分隔 (sep='_')。

更新

基于编辑后的“temp”,如果您只对“temp”的前两个元素感兴趣

 do.call(paste, c(as.data.frame(stri_list2matrix(temp[1:2], fill='')),
sep='_'))
#[1] "1_10" "2_11" "3_12" "_13" "_14"

您还可以按名称进行子集化,即。 temp[c('a', 'b')]

关于r - 合并 R 中的两列,同时当其他列中不存在值时进行替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30882592/

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