gpt4 book ai didi

根据查找表替换数据框中的值

转载 作者:行者123 更新时间:2023-12-03 07:37:48 24 4
gpt4 key购买 nike

我在替换数据框中的值时遇到一些问题。我想根据单独的表替换值。下面是我正在尝试做的事情的示例。

我有一个表,其中每一行都是客户,每一列都是他们购买的动物。我们将此数据框称为 table .

> table
# P1 P2 P3
# 1 cat lizard parrot
# 2 lizard parrot cat
# 3 parrot cat lizard

我还有一个要引用的表,名为 lookUp .

> lookUp
# pet class
# 1 cat mammal
# 2 lizard reptile
# 3 parrot bird

我想要做的是创建一个名为 new 的新表用函数替换 table 中的所有值与 class lookUp 中的专栏。我自己尝试过使用 lapply函数,但我收到以下警告。

new <- as.data.frame(lapply(table, function(x) {
gsub('.*', lookUp[match(x, lookUp$pet) ,2], x)}), stringsAsFactors = FALSE)

Warning messages:
1: In gsub(".*", lookUp[match(x, lookUp$pet), 2], x) :
argument 'replacement' has length > 1 and only the first element will be used
2: In gsub(".*", lookUp[match(x, lookUp$pet), 2], x) :
argument 'replacement' has length > 1 and only the first element will be used
3: In gsub(".*", lookUp[match(x, lookUp$pet), 2], x) :
argument 'replacement' has length > 1 and only the first element will be used

关于如何实现这项工作有什么想法吗?

最佳答案

您在问题中发布了一种不错的方法。这是一个类似的方法:

new <- df  # create a copy of df
# using lapply, loop over columns and match values to the look up table. store in "new".
new[] <- lapply(df, function(x) look$class[match(x, look$pet)])

另一种更快的方法是:

new <- df
new[] <- look$class[match(unlist(df), look$pet)]

请注意,我在这两种情况下都使用空括号 ([]) 来保持 new 的结构(data.frame)。

(我在答案中使用 df 而不是 table,使用 look 而不是 lookup)

关于根据查找表替换数据框中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35636315/

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