【发布时间】:2019-06-17 08:47:51
【问题描述】:
我在 R studio 中有以下数据框
DF1<-data.frame('X_F'=c(1,2,3,4,5, NA, NA, NA, 1,2,3,4,5), "X_A"=c(.1,.2,.3,.4,.5, NA, NA, NA, .2,.3,.4, .5,.6),"Y_F"=c(2,3,5,NA, 7, 1,3, 4, 1,NA,3,4,5), "Y_A"=c(.2,.3,.4,NA, .7, .1,.2,.7,.1,NA, .3,.4,.5),'ID'=c("A", "A", "A", "A", "A", "B", "B", "B", "C", "C", "C","C",'C'))
数据框由 5 列组成 - 用于标识每组的 AN ID 列和两组参数 - X_F、Y_F 和一组相应的 A 值 - X_A、Y_A。
数据框如下所示。
X_F X_A Y_F Y_A ID
1 0.1 2 0.2 A
2 0.2 3 0.3 A
3 0.3 5 0.4 A
4 0.4 NA NA A
5 0.5 7 0.7 A
NA NA 1 0.1 B
NA NA 3 0.2 B
NA NA 4 0.7 B
1 0.2 1 0.1 C
2 0.3 NA NA C
3 0.4 3 0.3 C
4 0.5 4 0.4 C
5 0.6 5 0.5 C
我想通过扩展上面的dataframe得到下面的dataframe。扩展的数据框将有一个名为 SF 的额外列。顺丰的价值观 派生为按 ID 分组的 X_F、Y_F 列的范围。此范围由每一步的值 1 分隔
ID SF X_F X_A Y_F Y_A
1 A 1 1 0.1 1 NA
2 A 2 2 0.2 2 0.2
3 A 3 3 0.3 3 0.3
4 A 4 4 0.4 4 NA
5 A 5 5 0.5 5 0.4
6 A 6 6 NA 6 NA
7 A 7 7 NA 7 0.7
8 B 1 1 NA 1 0.1
9 B 2 2 NA 2 NA
10 B 3 3 NA 3 0.2
11 B 4 4 NA 4 0.7
12 C 1 1 0.2 1 0.1
13 C 2 2 0.3 2 NA
14 C 3 3 0.4 3 0.3
15 C 4 4 0.5 4 0.4
16 C 5 5 0.6 5 0.5
我已经尝试过这种方法来获得所需的结果。
library(dplyr)
library(tidyr)
DF1
DF2<-DF1%>%group_by(ID)%>% mutate(SF=pmax(X_F, Y_F, na.rm = T))%>%
complete(SF=(full_seq(SF ,1)))
与上面的预期输出相比,我得到了以下输出
ID SF X_F X_A Y_F Y_A
<fct> <dbl> <dbl> <dbl> <dbl> <dbl>
A 2 1 0.1 2 0.2
A 3 2 0.2 3 0.3
A 4 4 0.4 NA NA
A 5 3 0.3 5 0.4
A 6 NA NA NA NA
A 7 5 0.5 7 0.7
B 1 NA NA 1 0.1
B 2 NA NA NA NA
B 3 NA NA 3 0.2
B 4 NA NA 4 0.7
C 1 1 0.2 1 0.1
C 2 2 0.3 NA NA
C 3 3 0.4 3 0.3
C 4 4 0.5 4 0.4
C 5 5 0.6 5 0.5
我请人帮忙。我无法解决这个问题
【问题讨论】: