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