如何根据一个列名称将数据帧拆分为不同的数据帧,比如 ##sensor_name ## 以 R 中的“RI_”、“AI_”等前缀开头的值,这样我就可以有两个数据帧,一个用于 RI,另一个用于人工智能?
我已经尝试了以下代码,但是当我旋转数据框时,它效果很好。
map(set_names(c("RI", "AI","FI")),~select(temp_df,starts_with(.x),starts_with("time_stamp")))
我希望输出有两个不同的数据帧,
RI_df:
AI_df:
由于我刚刚开始研究 R 编程语言,如果有人能帮助我,那就太好了。
最佳答案
一个选项是从基础R
中分割
lst1 <- split(df1, substr(df1$sensor_name, 1,2))
names(lst1) <- paste0(names(lst1), "_df")
如果前缀长度可变
lst1 <- split(df1, sub("_.*", "", df1$sensor_name))
或者使用tidyverse
library(dplyr)
df1 %>%
group_split(grp = str_remove(sensor_name, "_.*"), keep = FALSE)
注意:不建议在全局环境中拥有多个对象。因此,请将其保留在 list
中,并对该 list
本身进行所有分析
关于r - 如何根据以某个前缀开头的一列名称值将数据帧拆分为不同的数据帧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57431207/