R 在数据框内合并日期向量
我有一个数据结构R 在数据框内合并日期向量,r,date,datetime,data-management,R,Date,Datetime,Data Management,我有一个数据结构df,有一些日期向量,一零五,像这样 df <- structure(list(one.date = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, "2012-09-23", "2012-09-23", NA, NA, NA, NA, NA, NA, NA, NA, NA), two.date = c(NA, "2012-11-13", NA, "2012-11-19", NA, NA, NA, NA, NA, NA, NA, NA, NA,
df
,有一些日期向量,一零五,像这样
df <- structure(list(one.date = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, "2012-09-23", "2012-09-23", NA, NA, NA, NA, NA, NA, NA, NA, NA), two.date = c(NA, "2012-11-13", NA, "2012-11-19", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "2012-09-24", NA, NA, NA), three.date = c(NA, NA, "2012-11-19", NA, NA, NA, NA, NA, "2012-09-22", NA, NA, NA, NA, NA, NA, NA, NA, "2012-09-24", NA, NA), four.date = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "2012-09-02", "2012-09-10","2012-09-23", NA, NA, NA, NA, NA, NA), five.date = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "2012-09-24", "2014-09-09", NA, NA, NA, NA)), .Names = c("one.date", "two.date", "three.date", "four.date", "five.date"), row.names = c(NA, 20L), class = "data.frame")
# > df
one.date two.date three.date four.date five.date
1 <NA> <NA> <NA> <NA> <NA>
2 <NA> 2012-11-13 <NA> <NA> <NA>
3 <NA> <NA> 2012-11-19 <NA> <NA>
4 <NA> 2012-11-19 <NA> <NA> <NA>
5 <NA> <NA> <NA> <NA> <NA>
6 <NA> <NA> <NA> <NA> <NA>
7 <NA> <NA> <NA> <NA> <NA>
8 <NA> <NA> <NA> <NA> <NA>
9 <NA> <NA> 2012-09-22 <NA> <NA>
10 2012-09-23 <NA> <NA> <NA> <NA>
11 2012-09-23 <NA> <NA> <NA> <NA>
12 <NA> <NA> <NA> 2012-09-02 <NA>
13 <NA> <NA> <NA> 2012-09-10 <NA>
14 <NA> <NA> <NA> 2012-09-23 <NA>
15 <NA> <NA> <NA> <NA> 2012-09-24
16 <NA> <NA> <NA> <NA> 2014-09-09
17 <NA> 2012-09-24 <NA> <NA> <NA>
18 <NA> <NA> 2012-09-24 <NA> <NA>
19 <NA> <NA> <NA> <NA> <NA>
20 <NA> <NA> <NA> <NA> <NA>
df
日期二日期三日期四日期五日期
1.
2 2012-11-13
3 2012-11-19
4 2012-11-19
5.
6.
7.
8.
9 2012-09-22
10 2012-09-23
11 2012-09-23
12 2012-09-02
13 2012-09-10
14 2012-09-23
15 2012-09-24
16 2014-09-09
17 2012-09-24
18 2012-09-24
19
20
现在,我想把它们合并成一个向量。像这样,
date one.date two.date three.date four.date five.date
1 <NA> <NA> <NA> <NA> <NA> <NA>
2 2012-11-13 <NA> 2012-11-13 <NA> <NA> <NA>
3 2012-11-19 <NA> <NA> 2012-11-19 <NA> <NA>
4 2012-11-19 <NA> 2012-11-19 <NA> <NA> <NA>
5 <NA> <NA> <NA> <NA> <NA> <NA>
6 <NA> <NA> <NA> <NA> <NA> <NA>
7 <NA> <NA> <NA> <NA> <NA> <NA>
8 <NA> <NA> <NA> <NA> <NA> <NA>
9 2012-09-22 <NA> <NA> 2012-09-22 <NA> <NA>
10 2012-09-23 2012-09-23 <NA> <NA> <NA> <NA>
11 2012-09-23 2012-09-23 <NA> <NA> <NA> <NA>
12 2012-09-02 <NA> <NA> <NA> 2012-09-02 <NA>
13 2012-09-10 <NA> <NA> <NA> 2012-09-10 <NA>
14 2012-09-23 <NA> <NA> <NA> 2012-09-23 <NA>
15 2012-09-24 <NA> <NA> <NA> <NA> 2012-09-24
16 2014-09-09 <NA> <NA> <NA> <NA> 2014-09-09
17 2012-09-24 <NA> 2012-09-24 <NA> <NA> <NA>
18 2012-09-24 <NA> <NA> 2012-09-24 <NA> <NA>
19 <NA> <NA> <NA> <NA> <NA> <NA>
20 <NA> <NA> <NA> <NA> <NA> <NA>
日期一。日期二。日期三。日期四。日期五。日期
1.
2 2012-11-13 2012-11-13
3 2012-11-19 2012-11-19
4 2012-11-19 2012-11-19
5.
6.
7.
8.
9 2012-09-22 2012-09-22
10 2012-09-23 2012-09-23
11 2012-09-23 2012-09-23
12 2012-09-02 2012-09-02
13 2012-09-10 2012-09-10
14 2012-09-23 2012-09-23
15 2012-09-24 2012-09-24
16 2014-09-09 2014-09-09
17 2012-09-24 2012-09-24
18 2012-09-24 2012-09-24
19
20
任何帮助都将不胜感激。我假设每行最多有一个非
NA
条目:
as.vector(apply(df,1,function(x) ifelse(all(is.na(x)),NA,x[!is.na(x)])))
[1] NA "2012-11-13" "2012-11-19" "2012-11-19" NA
[6] NA NA NA "2012-09-22" "2012-09-23"
[11] "2012-09-23" "2012-09-02" "2012-09-10" "2012-09-23" "2012-09-24"
[16] "2014-09-09" "2012-09-24" "2012-09-24" NA NA
或者将其作为原始数据中的一个因素:
cbind(list(date=as.factor(apply(df,1,function(x) ifelse(all(is.na(x)),NA,x[!is.na(x)])))),df)
date one.date two.date three.date four.date five.date
1 <NA> <NA> <NA> <NA> <NA> <NA>
2 2012-11-13 <NA> 2012-11-13 <NA> <NA> <NA>
3 2012-11-19 <NA> <NA> 2012-11-19 <NA> <NA>
4 2012-11-19 <NA> 2012-11-19 <NA> <NA> <NA>
5 <NA> <NA> <NA> <NA> <NA> <NA>
6 <NA> <NA> <NA> <NA> <NA> <NA>
7 <NA> <NA> <NA> <NA> <NA> <NA>
8 <NA> <NA> <NA> <NA> <NA> <NA>
9 2012-09-22 <NA> <NA> 2012-09-22 <NA> <NA>
10 2012-09-23 2012-09-23 <NA> <NA> <NA> <NA>
11 2012-09-23 2012-09-23 <NA> <NA> <NA> <NA>
12 2012-09-02 <NA> <NA> <NA> 2012-09-02 <NA>
13 2012-09-10 <NA> <NA> <NA> 2012-09-10 <NA>
14 2012-09-23 <NA> <NA> <NA> 2012-09-23 <NA>
15 2012-09-24 <NA> <NA> <NA> <NA> 2012-09-24
16 2014-09-09 <NA> <NA> <NA> <NA> 2014-09-09
17 2012-09-24 <NA> 2012-09-24 <NA> <NA> <NA>
18 2012-09-24 <NA> <NA> 2012-09-24 <NA> <NA>
19 <NA> <NA> <NA> <NA> <NA> <NA>
20 <NA> <NA> <NA> <NA> <NA> <NA>
cbind(list(date=as.factor)(应用(df,1,函数(x)ifelse(all(is.na(x)),na,x[!is.na(x)])),df)
日期1.日期2.日期3.日期4.日期5.日期
1.
2 2012-11-13 2012-11-13
3 2012-11-19 2012-11-19
4 2012-11-19 2012-11-19
5.
6.
7.
8.
9 2012-09-22 2012-09-22
10 2012-09-23 2012-09-23
11 2012-09-23 2012-09-23
12 2012-09-02 2012-09-02
13 2012-09-10 2012-09-10
14 2012-09-23 2012-09-23
15 2012-09-24 2012-09-24
16 2014-09-09 2014-09-09
17 2012-09-24 2012-09-24
18 2012-09-24 2012-09-24
19
20
我假设每行最多有一个非NA
条目:
as.vector(apply(df,1,function(x) ifelse(all(is.na(x)),NA,x[!is.na(x)])))
[1] NA "2012-11-13" "2012-11-19" "2012-11-19" NA
[6] NA NA NA "2012-09-22" "2012-09-23"
[11] "2012-09-23" "2012-09-02" "2012-09-10" "2012-09-23" "2012-09-24"
[16] "2014-09-09" "2012-09-24" "2012-09-24" NA NA
或者将其作为原始数据中的一个因素:
cbind(list(date=as.factor(apply(df,1,function(x) ifelse(all(is.na(x)),NA,x[!is.na(x)])))),df)
date one.date two.date three.date four.date five.date
1 <NA> <NA> <NA> <NA> <NA> <NA>
2 2012-11-13 <NA> 2012-11-13 <NA> <NA> <NA>
3 2012-11-19 <NA> <NA> 2012-11-19 <NA> <NA>
4 2012-11-19 <NA> 2012-11-19 <NA> <NA> <NA>
5 <NA> <NA> <NA> <NA> <NA> <NA>
6 <NA> <NA> <NA> <NA> <NA> <NA>
7 <NA> <NA> <NA> <NA> <NA> <NA>
8 <NA> <NA> <NA> <NA> <NA> <NA>
9 2012-09-22 <NA> <NA> 2012-09-22 <NA> <NA>
10 2012-09-23 2012-09-23 <NA> <NA> <NA> <NA>
11 2012-09-23 2012-09-23 <NA> <NA> <NA> <NA>
12 2012-09-02 <NA> <NA> <NA> 2012-09-02 <NA>
13 2012-09-10 <NA> <NA> <NA> 2012-09-10 <NA>
14 2012-09-23 <NA> <NA> <NA> 2012-09-23 <NA>
15 2012-09-24 <NA> <NA> <NA> <NA> 2012-09-24
16 2014-09-09 <NA> <NA> <NA> <NA> 2014-09-09
17 2012-09-24 <NA> 2012-09-24 <NA> <NA> <NA>
18 2012-09-24 <NA> <NA> 2012-09-24 <NA> <NA>
19 <NA> <NA> <NA> <NA> <NA> <NA>
20 <NA> <NA> <NA> <NA> <NA> <NA>
cbind(list(date=as.factor)(应用(df,1,函数(x)ifelse(all(is.na(x)),na,x[!is.na(x)])),df)
日期1.日期2.日期3.日期4.日期5.日期
1.
2 2012-11-13 2012-11-13
3 2012-11-19 2012-11-19
4 2012-11-19 2012-11-19
5.
6.
7.
8.
9 2012-09-22 2012-09-22
10 2012-09-23 2012-09-23
11 2012-09-23 2012-09-23
12 2012-09-02 2012-09-02
13 2012-09-10 2012-09-10
14 2012-09-23 2012-09-23
15 2012-09-24 2012-09-24
16 2014-09-09 2014-09-09
17 2012-09-24 2012-09-24
18 2012-09-24 2012-09-24
19
20
df$onedatedf$onedate