我有数据1
BAKUNG BALATAK BARUGA BERINGIN CEMERLANG
1 5.397762 4.4421650 1.1371410 0.1915185 1.2023105
2 4.551889 1.1710558 0.6596748 2.2443573 5.5094816
3 9.290642 1.9318098 0.3717321 0.7481191 2.3554114
4 1.758246 1.6478570 1.1930006 0.7687339 1.5786976
5 2.497720 0.5127110 0.3331624 0.3225225 0.7541041
6 3.080921 0.6563498 1.8712953 1.0959114 1.1883456
和数据2
BAKUNG BALATAK CEMERLANG
1 <NA> <NA> <NA>
2 <NA> 2 <NA>
3 14 6 <NA>
4 17 <NA> 1
5 <NA> <NA> <NA>
6 <NA> <NA> <NA>
AMPANA TETE AMPIBABO
1 <NA> <NA>
2 <NA> <NA>
3 <NA> <NA>
4 <NA> <NA>
5 <NA> <NA>
6 <NA> <NA>
我想从具有相同站名的data1和data2中找到数据站。我想在这里获取数据
BAKUNG_data1 BAKUNG_data2 BALATAK_data1 BALATAK_data2
1 5.397762 NA 4.4421650 NA
2 4.551889 NA 1.1710558 2
3 9.290642 14 1.9318098 6
4 1.758246 17 1.6478570 NA
5 2.497720 NA 0.5127110 NA
6 3.080921 NA 0.6563498 NA
我试过了
abc <- merge(data1,data2, by = intersect(names(data1), names(data2)))
但是我什么也没有,有什么办法解决吗?
最佳答案
一种方法是获取长格式的数据,然后进行连接,最后获取宽格式的数据。
library(dplyr)
library(tidyr)
inner_join(data1 %>%
mutate(row = row_number()) %>%
pivot_longer(cols = -row, values_to = "data1"),
data2 %>%
mutate(row = row_number()) %>%
pivot_longer(cols = -row, values_to = "data2"),
by = c('name', 'row')) %>%
pivot_wider(names_from = name, values_from = starts_with('data')) %>%
select(-row)
关于r - 如何基于R中的列相交数据帧,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60717247/