英文:
Is there a way to merge two mutated dataframes together?
问题
所以,我基本上有两个数据框,从一个名为'original_data'的单一数据框突变而来:
我在'original_data'上使用了mutate函数,以保留仅<= 600秒的值,所有其他值将返回为NA,这存储在'new_data_one'中。
然后我再次在'original_data'上使用mutate函数,以保留单个值> 600,所有其他值将返回为NA,这存储在'new_data_two'中。
这两个数据框都保留了它们的结构,所以类似这样:
'original_data'
1 2 3 4 5
R1 80 98 150 599 650
R2 90 95 254 725 905
R3 93 96 540 650 780
'new_data_one'
1 2 3 4 5
R1 80 98 150 599 NA
R2 90 95 254 NA NA
R3 93 96 540 NA NA
'new_data_two'
1 2 3 4 5
R1 NA NA NA NA 650
R2 NA NA NA 725 NA
R3 NA NA NA 650 NA
我如何合并这两个突变的数据框('new_data_one'和'new_data_two'),以便获得类似下面的输出(基本上保留相同的列/行结构)?
'desired_merged_dataframe'
1 2 3 4 5
R1 80 98 150 599 650
R2 90 95 254 725 NA
R3 93 96 540 650 NA
英文:
so I basically have two dataframes mutated from a single dataframe 'original_data':
I used the mutate function on 'original data' to keep only values <= 600 seconds, all the other values would return as NA, this is stored in 'new_data_one'.
I then used the mutate function on 'original data' again to keep a single value >600, all the other values would return as NA, this is stored in 'new_data_two'.
Both of these dataframe retained their structure, so something like this:
'original_data'
1 2 3 4 5
R1 80 98 150 599 650
R2 90 95 254 725 905
R3 93 96 540 650 780
'new_data_one'
1 2 3 4 5
R1 80 98 150 599 NA
R2 90 95 254 NA NA
R3 93 96 540 NA NA
'new_data_two'
1 2 3 4 5
R1 NA NA NA NA 650
R2 NA NA NA 725 NA
R3 NA NA NA 650 NA
How do I merge the two mutated dataframes ('new_data_one' and 'new_data_two'), so I get an output of something like this (that essentially retains the same col/row structures)?
'desired_merged_dataframe'
1 2 3 4 5
R1 80 98 150 599 650
R2 90 95 254 725 NA
R3 93 96 540 650 NA
答案1
得分: 4
replace(df1, is.na(df1), df2[is.na(df1)])
X1 X2 X3 X4 X5
R1 80 98 150 599 650
R2 90 95 254 725 NA
R3 93 96 540 650 NA
library(tidyverse)
map2_df(df1, df2, coalesce)
# 一个 tibble: 3 × 5
X1 X2 X3 X4 X5
<int> <int> <int> <int> <int>
1 80 98 150 599 650
2 90 95 254 725 NA
3 93 96 540 650 NA
英文:
replace(df1, is.na(df1), df2[is.na(df1)])
X1 X2 X3 X4 X5
R1 80 98 150 599 650
R2 90 95 254 725 NA
R3 93 96 540 650 NA
library(tidyverse)
map2_df(df1, df2, coalesce)
# A tibble: 3 × 5
X1 X2 X3 X4 X5
<int> <int> <int> <int> <int>
1 80 98 150 599 650
2 90 95 254 725 NA
3 93 96 540 650 NA
答案2
得分: 0
这里是一个dplyr的解决方案:
library(dplyr)
new_data_one %>%
mutate(across(everything(), ~ coalesce(., new_data_two[[cur_column()]])))
X1 X2 X3 X4 X5
R1 80 98 150 599 650
R2 90 95 254 725 NA
R3 93 96 540 650 NA
英文:
Here is a dplyr solution:
library(dplyr)
new_data_one %>%
mutate(across(everything(), ~ coalesce(., new_data_two[[cur_column()]])))
X1 X2 X3 X4 X5
R1 80 98 150 599 650
R2 90 95 254 725 NA
R3 93 96 540 650 NA
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论