所以我不怎么问这个问题,我也很难搜寻,所以我想问一下用实际代码会更好。
我是R的新手,我想自学,到目前为止,我已经学习了基础知识,但是我遇到了一种情况,我认为循环遍历是一个更好的选择,但我不知道从哪里开始。
现在,我只是在随机制作csv文件,其中包含所有状态,但多个相同条目只是为了娱乐。
我已经学习了库“ dplyr”,可以按主题过滤
因此:
temp <- filter(states, State="AL")
我知道将所有具有State ='AL'的行分配给temp
所以我不是在逐个温度地逐个状态,而是在尝试学习如何开发一个循环,该循环可以检查状态的主题并从理论上动态地分配给临时物
temp1 <- filter(states, State="AL")
temp2 <- filter(states, State="CA")
....and so on
我只是想弄清楚如何遍历文件主题并动态分配它,然后将每个文件动态写入其自己的文件中。
write.csv(temp1, "AL.csv")
即使将我带到可以帮助我弄清楚它的地方,也是有益的。我现在只是被卡住了,我知道有可能,或者至少我认为是可以的。
答案 0 :(得分:1)
我将使用基数R的split
拆分您的数据,然后使用purrr::iwalk
浏览并写入文件:
样本数据:
library(tidyverse)
states <- tibble(
x = rnorm(1000),
state = sample(state.abb, 1000, replace = TRUE)
)
分割并写入:
split_states <- split(states, states$state)
iwalk(split_states, ~write_csv(.x, paste0(.y, ".csv"))
注意iwalk
等同于:
for (state in names(split_states)) {
write_csv(split_states[[state]], paste0(state, ".csv")
}
即将发布的dplyr 0.8.0版本将具有group_walk
,尽管我还没有尝试过,但它也可以在这里工作。
答案 1 :(得分:1)
据我所知,您不需要创建每个temp
文件,只需知道要过滤的状态,然后编写csv文件
为此,既然您已经熟悉dplyr
,则还应该安装readr
软件包
对于您的问题,首先必须具有唯一的状态
tidyverse
然后循环
# this will select the State column and get unique states
unique_states <- unique(states$State)