gpt4 book ai didi

r - 从单个表中查找多列

转载 作者:行者123 更新时间:2023-12-05 09:32:33 24 4
gpt4 key购买 nike

假设我有以下数据

df <- structure(list(car_model = c(301, 302, 303, 304), colour = c(501, 
502, 503, 504), sales = c(182, 191, 302, 101)), row.names = c(NA,
-4L), class = c("tbl_df", "tbl", "data.frame"))

我有一个查找表,我将在其中获取文本来替换 car_model 列中的代码和colour .

tbl1 <- structure(list(txt = c("A", "B", "C", "Y"), cod = c(301, 302, 
303, 304), var = c("car_model", "car_model", "car_model", "car_model"
)), row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"
))
tbl2 <- structure(list(txt = c("black", "green", "red", "white"), cod = c(501,
502, 503, 504), var = c("colour", "colour", "colour", "colour"
)), row.names = c(NA, -4L), class = c("tbl_df", "tbl", "data.frame"
))

结合我拥有的两个表

tbl <- rbind(tbl1,tbl2)
# A tibble: 8 x 3
txt cod var
<chr> <dbl> <chr>
1 A 301 car_model
2 B 302 car_model
3 C 303 car_model
4 Y 304 car_model
5 black 501 colour
6 green 502 colour
7 red 503 colour
8 white 504 colour

有没有办法替换主df中的所有列以这种方式使用查找表(将列名与列 varcod 中的值匹配)或者我需要制作单独的表,每个变量一个表?我的另一个疑问是,在具有约 1000 万行、30 个或更多变量以及总大小约 5000 行的查找表的数据集中执行此操作是否合理。

编辑:关于代码,不同的变量中可能有相同的代码。

EDIT2:我正在寻找一种快速且内存高效的解决方案。也许有一些解决方案 data.table

最佳答案

data.table 选项

cbind(unstack(setDT(tbl)[melt(
setDT(df)[, .(car_model, colour)], ,
variable.name = "var",
value.name = "cod"
), .(txt, var), on = .(var, cod)]), df[, .(sales)])

给出

  car_model colour sales
1 A black 182
2 B green 191
3 C red 302
4 Y white 101

关于r - 从单个表中查找多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67953198/

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