我有一個數據框中包含星期數(0到6,0 =星期日,1 =星期一等)的列,我需要將其轉換爲日期名稱。我怎樣才能做到這一點?在周R的星期幾名稱轉換爲R
的樣本數據:
df <- data.frame(day_number=0:6)
我有一個數據框中包含星期數(0到6,0 =星期日,1 =星期一等)的列,我需要將其轉換爲日期名稱。我怎樣才能做到這一點?在周R的星期幾名稱轉換爲R
的樣本數據:
df <- data.frame(day_number=0:6)
dplyr的簡單方法。
library(dplyr)
df <- data.frame(day_number=0:6)
df$day_number <- recode(df$day_number,
"0"="Sunday",
"1"="Monday",
"2"="Tuesday",
"3"="Wednesday",
"4"="Thursday",
"5"="Friday",
"6"="Saturday")
dat = data.frame(daynumber = c(1,5,6,0))
df <- data.frame(Number = 0:6,
Day = weekdays(x=as.Date(seq(7), origin="2017-10-01")))
dat$daynumber = df$Day[match(dat$daynumber,df$Number)]
如果不想安裝任何包,有一個很好的解決方案:
首先,讓我們創建一個新的一天系統data.frame,隨機變量,只是舉例:
dnum<-sample(0:6,10,replace=T)
var<-sample(LETTERS,10,replace=T)
df<-data.frame(dnum,var)
> df
dnum var
1 3 K
2 4 D
3 4 L
4 3 J
5 6 A
6 2 W
7 3 A
8 3 W
9 2 D
10 4 K
您可以創建一個數據銀行爲期一週的名字的那一天:
dnom<-c('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')
do<-0:6
dfo <- data.frame(dnom,do)
> dfo
dnom do
1 Sunday 0
2 Monday 1
3 Tuesday 2
4 Wednesday 3
5 Thursday 4
6 Friday 5
7 Saturday 6
現在,使用循環來查找您data.frame比較日的數字,與數據庫,並替換爲星期幾名。
sub<-c()
for(i in 1 :nrow(df)){
d<-dfo[dfo$do==df$dnum[i],]
sub[i]<-as.character(d$dnom[1])
}
df$dnum<-sub
dnum var
1 Wednesday K
2 Thursday D
3 Thursday L
4 Wednesday J
5 Saturday A
6 Tuesday W
7 Wednesday A
8 Wednesday W
9 Tuesday D
10 Thursday K
這不是優雅,但我希望能幫到你。
問候。
治療與天名稱的列作爲一個因素,因爲標籤:
x <- data.frame(wday=rep(0:6, 2))
x$wday_name <- factor(x$wday, levels=0:6,
labels=c("Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"))
x
# wday wday_name
# 1 0 Sunday
# 2 1 Monday
# 3 2 Tuesday
# 4 3 Wednesday
# 5 4 Thursday
# 6 5 Friday
# 7 6 Saturday
# 8 0 Sunday
# 9 1 Monday
# 10 2 Tuesday
# 11 3 Wednesday
# 12 4 Thursday
# 13 5 Friday
# 14 6 Saturday
如果你需要一個字符列,使用as.character
之後。