我有一个包含日期列的数据框:
date t14 rh14
1 2013-05-01 14.8 56.5
2 2013-05-02 14.5 71.8
3 2013-05-03 17.5 40.3
4 2013-05-04 19.0 34.6
5 2013-05-05 21.4 45.3
其中可以提取日期的月份(我使用以下内容:)
date=as.Date(paste(df.date$year,df.date$month,df.date$day, sep="-"),format="%Y-%m-%d")
现在我想在我的数据框中添加一个新列,这是一个因子f,取决于月份(1月 - >第一个值等)
factor=c(0.22,0.22,0.22,0.29,0.29,0.28,0.26,0.25,0.23,0.22,0.22,0.22)
一直在寻找解决方案但仍然不知道从哪里开始。对于R和一般的编程来说还是一个新手。任何帮助将非常感激。提前谢谢!
答案 0 :(得分:1)
听起来您希望将月份存储为单独的变量?如果您创建日期对象,则可以将其格式化为您喜欢的任何内容。
temp$date =as.Date(temp$date,format="%Y-%m-%d")
temp$month =format(temp$date, format="%B")
temp$month2 =format(temp$date, format="%m")
结果:
> temp$month
[1] "May" "May" "May" "May" "May"
或者,作为数字:
> temp$month2
[1] "05" "05" "05" "05" "05"
编辑:听起来你想要从因子列表中查找值(可能称之为其他东西,该术语已在R世界中使用)。然后你可以使用@JVL建议的月份值来查找,但你需要先转换为整数。可能是5月,6月将是7,依此类推。
value_factor=c(0.22,0.22,0.22,0.29,0.29,0.28,0.26,0.25,0.23,0.22,0.22,0.22)
value_factor[as.numeric(temp$month)]
对于您的数据,它变为
f[as.numeric(temp$month)]
[1] 0.29 0.29 0.29 0.29 0.29
答案 1 :(得分:0)
听起来您已将月份存储为df.date
数据框中的单独变量。如果是这样,你可以像这样创建一个因子:
Haude.input$monthF <- factor(df.date$month, levels=1:12, labels=c(0.22,0.22,0.22,0.29,0.29,0.28,0.26,0.25,0.23,0.22,0.22,0.22))
但是,您的值似乎更适合数字变量而不是因子(在R中,'因子'指的是绝对的东西)。如果这确实是真的,你可以这样做:
values = c(0.22,0.22,0.22,0.29,0.29,0.28,0.26,0.25,0.23,0.22,0.22,0.22)
Haude.input$monthF <- values[df.date$month]