R 如何将值从一个表复制到另一个表
我有两个被分组在一起的数据帧(SQL中的rbind或Union)。数据可以更好地表示,因为现在用户看到的是两行,而不是一行。具体来说,用户希望在一行而不是两行中看到酒店价格和其他酒店信息(两行是因为必须创建rbind-dummy列以匹配列的数量)。下面是要实现的示例(请注意,两个数据帧中的属性不匹配):R 如何将值从一个表复制到另一个表,r,R,我有两个被分组在一起的数据帧(SQL中的rbind或Union)。数据可以更好地表示,因为现在用户看到的是两行,而不是一行。具体来说,用户希望在一行而不是两行中看到酒店价格和其他酒店信息(两行是因为必须创建rbind-dummy列以匹配列的数量)。下面是要实现的示例(请注意,两个数据帧中的属性不匹配): df1您正在尝试执行与连接等效的操作。R的merge可以很好地完成这一点 首先预处理数据,去除数据帧中的NA列: df1_new <- df1[,-4] df2_new <- df2
df1您正在尝试执行与连接等效的操作。R的merge
可以很好地完成这一点
首先预处理数据,去除数据帧中的NA列:
df1_new <- df1[,-4]
df2_new <- df2[,-3]
Merge具有参数,用于控制要合并的列以及在不匹配的情况下保留哪些数据行
或者在一行中:merge(df1[,-4],df2[,-3])
这只保留匹配的值:
Property Dates RateAmount Occupancy
1 Property_a 2018-08-01 77.0288921 84.97796
2 Property_b 2018-08-02 234.1155289 84.67847
3 Property_c 2018-08-03 347.3747234 86.52871
4 Property_d 2018-08-04 0.7615909 85.14532
5 Property_e 2018-08-05 71.6080894 83.76476
6 Property_f 2018-08-06 171.5747186 86.05425
7 Property_g 2018-08-07 67.7377617 83.22948
8 Property_h 2018-08-08 23.6833664 86.16361
9 Property_i 2018-08-09 468.6021860 82.85337
10 Property_j 2018-08-10 250.3918442 85.03492
如果希望保留所有值,例如,可以设置all=TRUE
merge(df1[,-4],df2[,-3],all=TRUE)
Property Dates RateAmount Occupancy
1 Property_a 2018-08-01 77.0288921 84.97796
2 Property_b 2018-08-02 234.1155289 84.67847
3 Property_c 2018-08-03 347.3747234 86.52871
4 Property_d 2018-08-04 0.7615909 85.14532
5 Property_e 2018-08-05 71.6080894 83.76476
6 Property_f 2018-08-06 171.5747186 86.05425
7 Property_g 2018-08-07 67.7377617 83.22948
8 Property_h 2018-08-08 23.6833664 86.16361
9 Property_i 2018-08-09 468.6021860 82.85337
10 Property_j 2018-08-10 250.3918442 85.03492
11 Property_k 2018-08-01 77.0288921 NA
12 Property_l 2018-08-02 234.1155289 NA
13 Property_m 2018-08-03 347.3747234 NA
14 Property_n 2018-08-04 0.7615909 NA
15 Property_NA 2018-08-07 67.7377617 NA
16 Property_NA 2018-08-08 23.6833664 NA
17 Property_NA 2018-08-09 468.6021860 NA
18 Property_NA 2018-08-10 250.3918442 NA
19 Property_o 2018-08-05 71.6080894 NA
20 Property_p 2018-08-06 171.5747186 NA
21 Property_q 2018-08-07 67.7377617 NA
22 Property_r 2018-08-08 23.6833664 NA
23 Property_s 2018-08-09 468.6021860 NA
24 Property_t 2018-08-10 250.3918442 NA
25 Property_u 2018-08-01 77.0288921 NA
26 Property_v 2018-08-02 234.1155289 NA
27 Property_w 2018-08-03 347.3747234 NA
28 Property_x 2018-08-04 0.7615909 NA
29 Property_y 2018-08-05 71.6080894 NA
30 Property_z 2018-08-06 171.5747186 NA
df1$rateamunit=df2$occulation[match(df1$Property,df2$Property)]
或者可能是df2[is.na(df2)]对不起,伙计们,我没有提到这些属性不匹配。df1(带有RateAmount)的属性数是df2的3倍。我会在帖子中更新。唯一匹配的是Dates列。
Property Dates RateAmount Occupancy
1 Property_a 2018-08-01 77.0288921 84.97796
2 Property_b 2018-08-02 234.1155289 84.67847
3 Property_c 2018-08-03 347.3747234 86.52871
4 Property_d 2018-08-04 0.7615909 85.14532
5 Property_e 2018-08-05 71.6080894 83.76476
6 Property_f 2018-08-06 171.5747186 86.05425
7 Property_g 2018-08-07 67.7377617 83.22948
8 Property_h 2018-08-08 23.6833664 86.16361
9 Property_i 2018-08-09 468.6021860 82.85337
10 Property_j 2018-08-10 250.3918442 85.03492
merge(df1[,-4],df2[,-3],all=TRUE)
Property Dates RateAmount Occupancy
1 Property_a 2018-08-01 77.0288921 84.97796
2 Property_b 2018-08-02 234.1155289 84.67847
3 Property_c 2018-08-03 347.3747234 86.52871
4 Property_d 2018-08-04 0.7615909 85.14532
5 Property_e 2018-08-05 71.6080894 83.76476
6 Property_f 2018-08-06 171.5747186 86.05425
7 Property_g 2018-08-07 67.7377617 83.22948
8 Property_h 2018-08-08 23.6833664 86.16361
9 Property_i 2018-08-09 468.6021860 82.85337
10 Property_j 2018-08-10 250.3918442 85.03492
11 Property_k 2018-08-01 77.0288921 NA
12 Property_l 2018-08-02 234.1155289 NA
13 Property_m 2018-08-03 347.3747234 NA
14 Property_n 2018-08-04 0.7615909 NA
15 Property_NA 2018-08-07 67.7377617 NA
16 Property_NA 2018-08-08 23.6833664 NA
17 Property_NA 2018-08-09 468.6021860 NA
18 Property_NA 2018-08-10 250.3918442 NA
19 Property_o 2018-08-05 71.6080894 NA
20 Property_p 2018-08-06 171.5747186 NA
21 Property_q 2018-08-07 67.7377617 NA
22 Property_r 2018-08-08 23.6833664 NA
23 Property_s 2018-08-09 468.6021860 NA
24 Property_t 2018-08-10 250.3918442 NA
25 Property_u 2018-08-01 77.0288921 NA
26 Property_v 2018-08-02 234.1155289 NA
27 Property_w 2018-08-03 347.3747234 NA
28 Property_x 2018-08-04 0.7615909 NA
29 Property_y 2018-08-05 71.6080894 NA
30 Property_z 2018-08-06 171.5747186 NA