您好,我在 R 中有兩個 daframe,我想將它們連接起來。dfs 的結構是這樣的:
x <- data.frame(
ID = c(1, 2, 3),
S1 = c(10, NA, NA),
S2 = c(21, 22, 23)
)
y <- data.frame(
ID = c(1, 2, 3, 4),
S1 = c(11, 12, 13, 14),
S2 = c(24, 25, 26, 27)
)
我想要一些類似的東西:
final <- data.frame(
ID = c(1, 2, 3, 4, 5, 6, 7),
S1 = c(10, 11, 12, 13, 14, NA, NA),
S2 = c(21, 22, 23, 24, 25, 26, 27)
)
我試過使用 natural_join 但它給了我一個錯誤:
>library("rquery")
> final <- natural_join(ipeadata_d, ipeadata_d.cont, by = "ID",jointype = "FULL")
Error in natural_join.relop(dnodea, dnodeb, jointype = jointype, by = by, :
rquery::natural_join.relop all tables must have all join keys, the following keys are not in some tables: ID
我也試過 rbind,但資料幀保留了 NA。
我想像“最終”示例中那樣連接資料框,并想在 csv 檔案中轉換最終資料。謝謝你的幫助。
uj5u.com熱心網友回復:
這里有幾個問題:
- 首先 - 您的示例不可重復,因為
data.frames每個向量中的元素數量不同。我假設你的 ID 向量應該與 S1 和 S2 等長 - 第二:聽起來你可以在基礎 R 中完成你想要的,沒有任何特殊功能。您只是試圖連接或“聯合” 2 個 data.frames。R 使用該命令
rbind來執行此操作。
我在這里假設您想要的輸出是什么。
這是一個使用的作業示例rbind:
x <- data.frame(
ID = c(1, 2, 3),
S1 = c(10, NA, NA),
S2 = c(21, 22, 23)
)
y <- data.frame(
ID = c(4, 5, 6, 7),
S1 = c(11, 12, 13, 14),
S2 = c(24, 25, 26, 27)
)
final <- rbind(x,y)
> rbind(x,y)
ID S1 S2
1 1 10 21
2 2 NA 22
3 3 NA 23
4 4 11 24
5 5 12 25
6 6 13 26
7 7 14 27
供您參考,“合并”通常是指基于共享列或鍵組合 2 個 data.frames。
uj5u.com熱心網友回復:
您可以使用將兩個資料集組合在一起bind_rows,sort并將列放在NA最后。
library(dplyr)
bind_rows(x, y) %>%
mutate(ID = row_number(),
across(c(S1, S2), sort, na.last = TRUE))
# ID S1 S2
#1 1 10 21
#2 2 11 22
#3 3 12 23
#4 4 13 24
#5 5 14 25
#6 6 NA 26
#7 7 NA 27
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326228.html
下一篇:使用Pandas讀取CSV
