在 R 中将因子转换为日期以创建虚拟变量
convert factor to date in R to create dummy variable
我需要为数据集“counties”中的变量“date”创建“2020 年 4 月 11 日之前和之后”的虚拟变量。数据集中有一百多个日期。我正在尝试使用 as.date 函数将日期从 factor 转换为 date,但得到 NA。你能帮我找出我出错的地方吗?我保留了我创建的另一个虚拟变量以防万一,如果它影响整体结果
counties <- read.csv('C:/Users/matpo/Desktop/us-counties.csv')
str(counties)
as.Date(counties$date, format = '%m/%d/%y')
#create dummy variables forNew York, New Jersey, California, and Illinois
counties$state = ifelse(counties$state == 'New Jersey' &
counties$state == 'New York'& counties$state == 'California' &
counties$state == 'Illinois', 1, 0)
counties$date = ifelse(counties$date >= "4/11/2020", 1, 0)
字符串输出
$ date : logi NA NA NA NA NA NA ...
$ county: Factor w/ 1774 levels "Abbeville","Acadia",..: 1468 1468 1468 379 1468 1178 379 1468 979 942 ...
$ state : num 0 0 0 0 0 0 0 0 0 0 ...
$ fips : int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ...
$ cases : int 1 1 1 1 1 1 1 1 1 1 ...
$ deaths: int 0 0 0 0 0 0 0 0 0 0 ...``
谢谢!
您在 as.Date
中的格式不正确,您应该使用 "%Y"
作为 4 位数年份。
您需要重新分配值 (<-
) 才能更改值。
"4/11/2020"
只是一个字符串,如果要比较日期,则需要将其转换为日期对象。您也可以避免在此处使用 ifelse
。
尝试:
counties$date <- as.Date(counties$date, format = '%m/%d/%Y')
counties$dummy <- as.integer(counties$date >= as.Date('2020-04-11'))
我需要为数据集“counties”中的变量“date”创建“2020 年 4 月 11 日之前和之后”的虚拟变量。数据集中有一百多个日期。我正在尝试使用 as.date 函数将日期从 factor 转换为 date,但得到 NA。你能帮我找出我出错的地方吗?我保留了我创建的另一个虚拟变量以防万一,如果它影响整体结果
counties <- read.csv('C:/Users/matpo/Desktop/us-counties.csv')
str(counties)
as.Date(counties$date, format = '%m/%d/%y')
#create dummy variables forNew York, New Jersey, California, and Illinois
counties$state = ifelse(counties$state == 'New Jersey' &
counties$state == 'New York'& counties$state == 'California' &
counties$state == 'Illinois', 1, 0)
counties$date = ifelse(counties$date >= "4/11/2020", 1, 0)
字符串输出
$ date : logi NA NA NA NA NA NA ...
$ county: Factor w/ 1774 levels "Abbeville","Acadia",..: 1468 1468 1468 379 1468 1178 379 1468 979 942 ...
$ state : num 0 0 0 0 0 0 0 0 0 0 ...
$ fips : int 53061 53061 53061 17031 53061 6059 17031 53061 4013 6037 ...
$ cases : int 1 1 1 1 1 1 1 1 1 1 ...
$ deaths: int 0 0 0 0 0 0 0 0 0 0 ...``
谢谢!
您在
as.Date
中的格式不正确,您应该使用"%Y"
作为 4 位数年份。您需要重新分配值 (
<-
) 才能更改值。"4/11/2020"
只是一个字符串,如果要比较日期,则需要将其转换为日期对象。您也可以避免在此处使用ifelse
。
尝试:
counties$date <- as.Date(counties$date, format = '%m/%d/%Y')
counties$dummy <- as.integer(counties$date >= as.Date('2020-04-11'))