R for循环将 Dataframe 过滤成新的 Dataframe

sf6xfgos  于 2023-09-27  发布在  其他
关注(0)|答案(2)|浏览(98)

我正在处理dataframe(US)中包含的一些数据,其中包含2000-2019年美国各州(location_name)的诊断率(rate)。我想根据年份将其分离到单独的 Dataframe 中。
我知道我可以通过赋值US_2000 <- US %>% filter(year == 2000)来手动完成这一点,但我希望能够生成一个for循环来完成这20年。我试过:

years <- distinct(US, year)

for (y in years) {
  name <- paste("US", as.character(y), sep="_")  
  name <- US %>% filter(year == y)
}

但这似乎只产生一个名为US_2000且具有不同年份(每年2-3个州)的各行的 Dataframe 。创建新 Dataframe 的目的是在绘图函数中使用,以产生每个状态的速率的可视化。我是一个新的R和帮助将不胜感激。谢谢

mrwjdhj3

mrwjdhj31#

您需要将每个dataframe附加到一个列表中,并列出您要实现的目标

years <- distinct(US, year)
list1 <- list()

for (y in years) { 
  name <- US %>% filter(year == y)

  list1[[length(list1)+1]] = name
}

list1
h43kikqp

h43kikqp2#

你尝试做的事情不起作用,它会首先将你正在粘贴的字符串放入对象name,然后用dataframe替换name的内容。更好的方法是使用Stefan的示例或

mylist <- US %>%
           split(.$year)

这也将更容易用于绘图,因为您可以执行以下操作

mylist %>% 
    lapply(function(x) plot(x))

来绘制各个表。
完整性:这是不好的做法,但你可以做你想用

assign(paste("US",
          as.character(y), 
          sep="_"),
       US %>% filter(year == y))

在你的圈子里

相关问题