我想从多个数据帧中获取某些列并将它们组合成一个数据帧。我希望结合多天的歧视分数(每天都是自己的数据框)。我可以拥有超过30个数据框,并且手动写出每行代码都很痛苦,并且正在寻找更高效的东西。
这就是我一直在做的事情:
#Day 1
MTDay1 <- data.frame(MTD1$Animal.ID, MTD1$End.Summary...Corrects..1.)
MTDay1$Day <- "Day 1"
colnames(MTDay1) <- c("Subject",
"Correct",
"Day")
#Day3
MTDay3 <- data.frame(MTD3$Animal.ID, MTD3$End.Summary...Corrects..1.)
MTDay3$Day <- "Day 3"
colnames(MTDay3) <- c("Subject",
"Correct",
"Day")
#Day4
MTDay4 <- data.frame(MTD4$Animal.ID, MTD4$End.Summary...Corrects..1.)
MTDay4$Day <- "Day 4"
colnames(MTDay4) <- c("Subject",
"Correct",
"Day")
#Combine Days
MTdf <- rbind(MTDay1,
MTDay3,
MTDay4)
我想从每天获取Subject和Percent Correct列,并将它们组合成一个新的数据框。必须有一种更有效的方法来做到这一点,也许是一个循环?
任何信息都将不胜感激! 谢谢
答案 0 :(得分:0)
考虑使用Dictionary<int, IDictionary<int, string>> items = viewModel.Items
.GroupBy(t => t.Number)
.ToDictionary(t => t.Key, t => (IDictionary<int, string>) t.ToDictionary(x => x.LanguageId, x => x.Translation));
或eapply
构建一个命名的数据框列表。然后使用mget
以元素方式遍历列表的名称和数据框元素。另外,为Map
中的每一列命名。最后,运行data.frame
以对新列表的所有数据框元素进行rowbind。
do.call
或者,将源文件读入命名列表并使用# EQUIVALENT CALLS (CHOOSE EITHER)
df_list <- eapply(.GlobalEnv, function(d) d)[c("MTD1", "MTD2", "MTD3", ...)]
df_list <- mget(c("MTD1", "MTD2", "MTD3", ...))
df_process <- function(name, df) {
# ASSIGN NAMED COLUMNS IN data.frame CALL
data.frame(Subject = df$Animal.ID,
Correct = df$End.Summary,
#... other columns ...,
Day = gsub("MTD", "Day ", name))
}
new_list <- Map(df_process, names(df_list), df_list)
MTdf <- do.call(rbind, new_list)
从问题文件中输出空数据帧。
tryCatch