我目前正在尝试用R进行编码。我想使用一个日期%Y-%m-%d格式(例如:2017-12-31)并将其转换为一年中的某天。但是,我希望始终将02/28视为第59天,将03/01视为第61天。如果不是a年,它将跳过#60。这样,01/01始终是#1,而12/31始终是#366。
我已经尝试过使用strftime()和yday(),但是当这是a年时,两者都不会跳过第60天。根据是否是a年,它将使12/31成为第365天或#366天。
如果有人对我如何用R编写代码有任何见解,那就太好了!非常感谢。
file <- read.table("PATHTOMYFILE", fill = TRUE, header = TRUE)
file <- file[-c(1), ]
file$datetime <- as.Date(as.character(file$datetime))
file <- file[which(file$datetime <= as.Date("2017-09-30")), ]
file$x <- file[, 4]
file$x <- as.numeric(as.character(file$x))
# Year-day function
yearday <- function(d){
# Count previous months
yd <- ifelse(lubridate::month(d) > 1, sum(lubridate::days_in_month(1:
(lubridate::month(d)-1))), 0)
# Add days so far in month & extra day if after February
yd <- yd + lubridate::day(d) + ifelse(lubridate::month(d)>2, 1, 0)
yd
} …Run Code Online (Sandbox Code Playgroud) 我有一个这样开始的数据表:
test <- data.frame("AZ" = c("ABCD, AAAA, BBBB"), "AK" = c("ABCD"), "NJ" = c("BBBC", "AAAA"))
Run Code Online (Sandbox Code Playgroud)
每列都是一个州(亚利桑那州、阿拉斯加、新泽西州),这些列中的值是代码。如果单个单元格中有多个代码,则将以逗号分隔。
我想创建一个计数表,显示每个州显示的每个代码的数量。所以表格最终看起来像这样:
test2 <- data.frame("ABCD" = c("2", "2", "0"), "AAAA" = c("2", "0", "1"), "BBBB" = c("2", "0", "0"), "BBBC" = c("0", "0", "1"), row.names = c("AZ", "AK", "NJ"))
Run Code Online (Sandbox Code Playgroud)
有没有办法在 R 中输出这样的表?我一直在玩 dplyr,但到目前为止还没有运气。感谢您的帮助 :)
我有一张看起来像这样的表:
start_table <- data.frame("Water_Year" = c("1903", "1903", "1904", "1904"), "X" = c(13, 11, 12,
15), "Day" = c(1, 2, 1, 2))
Run Code Online (Sandbox Code Playgroud)
('Day' 列不参与我的偏斜和峰度计算,它只是在我的表中)
我想要一个计算按年份分组的偏斜和峰度值的表格:
end_table <- data.frame("Water_Year" = c("1903", "1904"), "Skew" = c("skew_number_here",
"skew_number_here"), "Kurtosis" = c("kurtosis_number_here", "kurtosis_number_here"))
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何按年份对其进行分组以执行这些计算。
所以我现在有一个看起来像这样的表:
data_wrong <- data.table(State = c("NY", "NY", "NY", "NY", "PA", "PA", "PA",
"NJ", "NJ", "NJ"), Year = c("1973", "1974", "1975", "2005", "1992", "1993",
"2001", "1930", "1931", "1932"), Consecutive_Yrs = c(1,2,3,1,1,6,1,1,9,10))
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
data <- data.table(State = c("NY", "NY", "NY", "NY", "PA", "PA", "PA", "NJ",
"NJ", "NJ"), Year = c("1973", "1974", "1975", "2005", "1992", "1993",
"2001", "1930", "1931", "1932"), Consecutive_Yrs = c(1,2,3,1,1,2,1,1,2,3))
Run Code Online (Sandbox Code Playgroud)
这是我现在用来获取我的表的代码:
data$diff <- NA
data <- data %>%
group_by(State) %>%
arrange(State) %>%
mutate(diff = Year - lag(Year, default = first(Year))) …Run Code Online (Sandbox Code Playgroud)