R 数据帧分配

R 数据帧分配,r,dataframe,subset,R,Dataframe,Subset,今天我带着一个新问题回来 我已经在寻找答案了,但是我读到的所有答案都需要一些我目前还不具备的重要知识 我想解决的问题是如何根据数据帧的变量自动为值指定名称 因此,假设我在包数据集中有一个ChickWeight的数据框 数据框中有50只小鸡,根据时间的不同,每只小鸡有几行 我想分配一些类似的任务,但是要分配给所有的小妞。无需手动输入全部50个 Chick1 <- ChickWeight[which(ChickWeight$Chick == 1),] ... ... Chick50 <-

今天我带着一个新问题回来

我已经在寻找答案了,但是我读到的所有答案都需要一些我目前还不具备的重要知识

我想解决的问题是如何根据数据帧的变量自动为值指定名称

因此,假设我在包数据集中有一个ChickWeight的数据框

数据框中有50只小鸡,根据时间的不同,每只小鸡有几行

我想分配一些类似的任务,但是要分配给所有的小妞。无需手动输入全部50个

Chick1 <- ChickWeight[which(ChickWeight$Chick == 1),]
...
...
Chick50 <- ChickWeight[which(ChickWeight$Chick == 50),]

Chick1正如他们在评论中提到的,对于数据帧列表:

ldf <- split(ChickWeight, ChickWeight$Chick)
list2env(ldf, .GlobalEnv)
如果希望每个数据帧都有单独的对象,请取消列出数据帧列表:

ldf <- split(ChickWeight, ChickWeight$Chick)
list2env(ldf, .GlobalEnv)
要访问数据帧,请执行以下操作:

`20`
如果我们不希望数字作为数据帧名称,我们可以创建一个新列
ChickWeight$id
添加前缀
Chick\ucode>,然后像以前一样继续:

ChickWeight$id <- paste0("Chick_", ChickWeight$Chick)
# List of data frames
ldf <- split(ChickWeight, ChickWeight$id)
# Separated objects
list2env(ldf, .GlobalEnv)

ChickWeight$id我找到了一种方法来创建您想要的内容。批量分配对n00b I am来说有点挑战

df<-ChickWeight

#PREPARING VARIABLE NAMES

df$Chick<-paste("Chick_",df$Chick,sep="");
df$Chick<-as.character(factor(df$Chick, levels=unique(df$Chick)))

#FUNCTION TO BE ABLE TO BATCH ASSIGN

assign_ouistiti<-function(NAMES, VALUES) {mapply(assign, NAMES, VALUES, MoreArgs = list(envir = .GlobalEnv));invisible()}

#PRODUCE ALL THE VARIABLES YOU WANTED

assign_ouistiti(names(split(df,df$Chick)),split(df,df$Chick))

使用
split()
将其放入数据帧列表中。此外,您似乎正在尝试做一些不好的事情。为什么要分配50个
data.frame
s这样?不知道为什么要窃笑?关于这个想法,如果我想对每个小鸡进行不同的分析,你会给出什么建议?你想做什么?看起来,
split
aggregate
by
(或它们的组合)会起到作用。检查标题中的拼写。那太完美了!非常感谢。如果你不介意的话,我想问你一个问题。。d$
20
当我运行它时,那行代码给了我“NULL”。。。。但是当我使用list2env时,它工作得非常好。这是怎么回事?非常感谢如果你不介意的话,还有一个吗?如何重命名所有数据帧,而不是使用此名称
10
10?谢谢@TomasalonSoreh对于你的第一个评论,这是我纠正的一个拼写错误。对于您的第二条评论,我扩展了我的答案,因此每个数据帧名称前面都有
Chick\uuu
。请点击检查标记来考虑。@ ToMasalon SoRooor我的答案提供了一种不同的方式来做同样的事情。如果您需要分配大量变量,请检查我的分配函数。