【问题标题】:splitting the data set base on a specific start in the cell根据单元格中的特定开始拆分数据集
【发布时间】:2019-11-29 11:20:51
【问题描述】:

我有一个像

这样的数据集
df <- data.frame(year.id = c("2011.01","2011.02","2011.03",
                         "2013.01","2013.02","2013.03",
                         "2015.01","2015.02","2015.03"),
             values =c(20,25,30,
                       40,50,60,
                       70,80,90))

如果 yearid 以 2011/2013/2015 开头,我想拆分此数据集以及获取三个数据集的内容

 ##first df 
year.id values
2011.01     20
2011.02     25
2011.03     30
##second df 
2013.01     40
2013.02     50
2013.03     60
##third df
2015.01     70
2015.02     80
2015.03     90

非常感谢,

【问题讨论】:

标签: r dplyr data-manipulation


【解决方案1】:

如果您有与显示相同的数据,您可以使用正则表达式提取年份部分,然后使用split

split(df, sub("\\..*", "", df$year.id))

#$`2011`
#  year.id values
#1 2011.01     20
#2 2011.02     25
#3 2011.03     30

#$`2013`
#  year.id values
#4 2013.01     40
#5 2013.02     50
#6 2013.03     60

#$`2015`
#  year.id values
#7 2015.01     70
#8 2015.02     80
#9 2015.03     90

如果数据中还有其他年份,并且您只想提取提到的年份

df$year <- sub("\\..*", "", df$year.id)
temp <- subset(df,  year %in% c(2011, 2013, 2015))
split(temp, temp$year)

【讨论】:

    【解决方案2】:
    df2011=df[grepl("2011",df$year.id),]
    df2013=df[grepl("2013",df$year.id),]
    df2015=df[grepl("2015",df$year.id),]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      • 2023-02-16
      • 2017-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多