【发布时间】:2019-05-28 22:46:28
【问题描述】:
可重现的数据:
Start_Curr_Job <- c(2009, 2011, 2014)
End_Curr_Job <- c(2012, 2015, 2019)
data_clean <- data.frame(Start_Curr_Job, End_Curr_Job)
我有一个包含“startyear”和“endyear”列的数据框。我正在尝试创建第三列,其中将包含其间所有年份的包容性列表,但我下面的代码无法正常工作。
例如,对于 startyear = 2009 和 endyear = 2012,allyears 应该等于 2009、2010、2011、2012。
任何建议将不胜感激。我的代码如下:
data_clean <- data_raw %>%
filter(!is.na(Start_Curr_Job), !is.na(End_Curr_Job),
Start_Curr_Job != "NA", End_Curr_Job != "NA" ) %>%
mutate(Start_Curr_Job = as.numeric(Start_Curr_Job),
End_Curr_Job = as.numeric(End_Curr_Job)) %>%
mutate(all_years = seq(from = Start_Curr_Job, to = End_Curr_Job, by = 1))
错误消息:“seq.default 中的错误(从 = Start_Curr_Job,到 = End_Curr_Job,by = 1): 'from' 的长度必须为 1"
我也尝试了以下,但它产生了 allyears = "2019:2012",这也不是我想要的。
for (row in 1:nrow(data_clean)) {
data_clean$years[row] <- list(data_clean$Start_Curr_Job[row]:data_clean$End_Curr_Job[row])
}
【问题讨论】:
-
您好,欢迎来到 stackoverflow。使用
seq函数应该创建一个包含起点和终点的数字向量(见下文)。为了提供更多帮助,也许您可以提供reproducible example and data?seq(from = 2009, to = 2012) -
但是我下面的代码不起作用...你应该告诉我们为什么它不起作用。阅读此线程stackoverflow.com/questions/5963269/… 以了解您应该共享哪些信息(一个最小的工作示例(意思是数据集)、您的代码(您共享的)以及如果您寻求调试时的错误)。此外,请访问how to ask 并拨打tour。
-
@Dean OP 已经在使用
seq(from = Start_Curr_Job, to = End_Curr_Job, by = 1)请仔细阅读问题。干杯。 -
感谢您的帮助。我收到以下错误消息: seq.default 中的错误(从 = Start_Curr_Job,到 = End_Curr_Job,by = 1):'from' must be of length 1
-
@Dean 刚刚添加了可重现的数据。谢谢!