gpt4 book ai didi

将所有数据帧单元格中的字符串替换为另一个数据帧中的相应条目

转载 作者:行者123 更新时间:2023-12-01 20:15:12 25 4
gpt4 key购买 nike

我有一个数据框,在数据框的单元格中具有不同数量的名称,我想将其替换为另一个数据框的相应编号。之后,我想继续计算平均值和最大值,但这不是我的问题的一部分。

df_with_names <-read.table(text="
id names
1 AA,BB
2 AA,CC,DD
3 BB,CC
4 AA,BB,CC,DD
",header=TRUE,sep="")

具有相应数字的数据框看起来像

df_names <-read.table(text="
name number_1 number_2
AA 20 30
BB 12 14
CC 13 29
DD 14 27
",header=TRUE,sep="")

在第一步结束时应该是

id number_1   number_2
1 20,12 30,14
2 20,13,14 30,29,27
3 12,13 14,29
4 20,12,13,14 30,14,29,27

从这里我知道如何继续,但我不知道如何到达那里。

我尝试将循环中每一行的名称分离到一个数据帧中,然后替换这些名称,但我总是无法获得 df_with_names 的正确列。一段时间后,我怀疑 replace() 是我正在寻找的函数。谁能帮忙?

最佳答案

library(data.table)

dt1 = as.data.table(df_with_names)
dt2 = as.data.table(df_names)

setkey(dt2, name)

dt2[setkey(dt1[, strsplit(as.character(names), split = ","), by = id], V1)][,
lapply(.SD, paste0, collapse = ","), keyby = id]
# id name number_1 number_2
#1: 1 AA,BB 20,12 30,14
#2: 2 AA,CC,DD 20,13,14 30,29,27
#3: 3 BB,CC 12,13 14,29
#4: 4 AA,BB,CC,DD 20,12,13,14 30,14,29,27

上面首先在第一个 data.table 中沿着逗号分割名称,然后将其与第二个数据表连接起来(在适当设置键之后),并用逗号将所有结果列折叠回去.

关于将所有数据帧单元格中的字符串替换为另一个数据帧中的相应条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25536940/

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