R 根据条件向数据框添加列
假设我有两个数据帧:R 根据条件向数据框添加列,r,R,假设我有两个数据帧: library(tidyverse) quaters <- tibble( quarter = c("Q1", "Q2","Q3", "Q4"), start_date = as.Date(c("2020-4-20", "2020-7-21", "2020-10-22", "2021-1-22")),
library(tidyverse)
quaters <- tibble(
quarter = c("Q1", "Q2","Q3", "Q4"),
start_date = as.Date(c("2020-4-20", "2020-7-21", "2020-10-22", "2021-1-22")),
end_date = as.Date(c("2020-7-20", "2020-10-21", "2021-1-22", "2021-4-22"))
)
test_data <- tibble(city =c("Paris", "London", "Rome"),
date = as.Date(c("2020-6-25", "2020-9-12", "2020-10-11")))
库(tidyverse)
四分之一我们可以使用来自data.table
library(data.table)
setDT(test_data)[as.data.table(quaters),
quarter := i.quarter,on = .(date >= start_date, date <= end_date)]
谢谢我在数据表上使用了它,一切正常,但如果我的数据是data.frame
,它就不起作用了。我能做些什么来修复它?只是尝试使用as.data.table,但出现了一些问题encoding@SarkansSatans您可以使用setDT
转换为data.table,也可以使用setDF
从data.table->data.frame转换为data.table。谢谢,只编写了setDF而不是setDT。dplyr包还有其他方法吗?如果不是,我将不得不处理新的data.frame语法,而且我以前从未使用过它,似乎我必须阅读“data.frame”@Sarkansatans的所有基础知识。如果使用setDF
,它将转换为data.frame
,代码将无法工作,因为它是data.table语法。您需要setDT
test_data
# city date quarter
#1: Paris 2020-06-25 Q1
#2: London 2020-09-12 Q2
#3: Rome 2020-10-11 Q2