gpt4 book ai didi

r - 将数据框拆分为新数据框时的命名

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

我想根据变量 (df$pet) 的值创建三个新的数据框,这样我就可以得到 dfdogCorrect、dfcatCorrect 和 dfratCorrect。

我当前代码的问题是我无法让新数据框的命名正常工作。我正在使用 unique(df$pet),它将 pet 中的第一个唯一元素分配给第一个新数据框,而不考虑新数据框的内容。

非常感谢您的任何帮助。

起点:

df <- data.frame(pet=c("dog","dog","dog","cat","cat","rat","rat","rat","rat"),relstatus=c(1,2,1,2,2,2,2,1,2),age=c(34,54,56,32,45,64,65,32,45), stringsAsFactors = FALSE)

期望的结果:

dfdogCorrect <- data.frame(pet=c("dog","dog","dog"),relstatus=c(1,2,1),age=c(34,54,56), stringsAsFactors = FALSE)
dfcatCorrect <- data.frame(pet=c("cat","cat"),relstatus=c(2,2),age=c(32,45), stringsAsFactors = FALSE)
dfratCorrect <- data.frame(pet=c("rat","rat","rat","rat"),relstatus=c(2,2,1,2),age=c(64,65,32,45), stringsAsFactors = FALSE)

当前代码:

s <- setNames(split(df, df$pet), paste0("df", unique(df$pet)))
list2env(s, globalenv())

最佳答案

您可以通过在 split()f 参数中创建它们来自动设置列表名称。我不会添加 list2env() 行,因为我认为将相似的数据留在列表中比将它们分散到全局环境中更好。

split(df, paste0("df", df$pet, "Correct"))
# $dfcatCorrect
# pet relstatus age
# 4 cat 2 32
# 5 cat 2 45
#
# $dfdogCorrect
# pet relstatus age
# 1 dog 1 34
# 2 dog 2 54
# 3 dog 1 56
#
# $dfratCorrect
# pet relstatus age
# 6 rat 2 64
# 7 rat 2 65
# 8 rat 1 32
# 9 rat 2 45

关于r - 将数据框拆分为新数据框时的命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46897598/

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