我为我的英语不好而道歉,但我确实需要您的帮助。
我有一个.csv数据集,其中有两列-年和值。有关于1900年至2019年每月降水高度的数据。
它看起来像这样:
year value
190001 100
190002 39
190003 78
190004 45
...
201912 25
我需要创建两个新的数据集:第一个数据集包含从7月(07)到9月(09)每年的数据,第二个数据集是从1月(01)到3月(03)的数据。
我还需要总结每年的数据(这意味着我每年只需要一个值)。
所以我有1900-2019年夏季和1900-2019年冬季的数据。
答案 0 :(得分:1)
您可以使用dplyr
和stringr
软件包来满足您的需求。我首先创建了一个模拟数据集:
library(dplyr)
library(stringr)
df <- data.frame(time = 190001:201219, value=runif(length(190001:201219), 0, 100))
之后,我们分别为月份和年份创建两个列:
df$year <- as.numeric(str_extract(df$time, "^...."))
df$month <- as.numeric(str_extract(df$time, "..$"))
此时,我们可以过滤:
df_1 <- df %>% filter(between(month,7,9))
df_2 <- df %>% filter(between(month,1,3))
...并总结:
df <- df %>% group_by(year) %>% summarise(value = sum(value))
答案 1 :(得分:0)
library(tidyverse)
dat <- tribble(
~year, ~value,
190001, 100,
190002, 39,
190003, 78,
190004, 45)
将year变量拆分为month和year变量:
dat_prep <- dat %>%
mutate(month = str_remove(year, "^\\d{4}"), # Remove the first 4 digits
year = str_remove(year, "\\d{2}$"), # Remove the last 2 digits
across(everything(), as.numeric))
dat_prep %>%
filter(month %in% 7:9) %>% # For months Jul-Sep. Repeat with 1:3 for Jan-Mar
group_by(year) %>%
summarize(value = sum(value))