我想创建多个DF,其中每个新DF仅包含该学生的观察结果。当前,我使用以下代码创建一个新的DF。我重复一遍,更改学生姓名。
James <- All_Results [which(All_Results$`Student.x` =='James'),]
DF:全部结果
Student Score_Jan Score_Feb Score Mar
James 12 76 23
James 52 86 63
James 19 74 83
Nick 72 26 54
Nick 92 16 43
Nick 12 76 23
Tony 87 36 52
Tony 22 46 33
如果我有以下内容,该怎么办
c(James, Nick, Tony)
感谢您的帮助
答案 0 :(得分:2)
如果length
中的vector
大于或等于1,则可以选择%in%
newdat <- All_Results[All_Results$`Student.x` %in% c('James', 'Nick', 'Tony'),]
它还将处理NA
元素,因此不需要用which
换行
如果打算创建单独的data.frame,请使用split
lst1 <- split(All_Results, All_Results$`Student.x`)
如果我们只需要元素的子集,则使用之前创建的'newdat'
lst1 <- split(newdat, new$`Student.x`)
它将返回list
中的data.frame
个。不建议在全局环境中创建多个data.frame对象。但是,可以使用assign
或list2env
list2env(lst1, .GlobalEnv)