我有個問題。正如標題所說,現在我需要用另一個 Excel 檔案中的新資料替換一些列。當滿足某些要求時,我需要更換它們。
例如,我想用另一個excel檔案中的新資料將R5列替換為APM(例如任意列標題名稱),替換前應滿足以下條件:
- 替換為相同的ID,這意味著我希望在替換時匹配每個人的ID
- 當一行中的一列顯示“N”時不要替換。例如,如果一行中 R5 到 APM 之間的任何單元格有 N,則不要替換它。
基本上,我想確保資料完全匹配。
如何在 R 中完成此任務?或者,我怎樣才能在 MS Excel 中實作它?非常感謝您的幫助!我會非常感謝每一個答案。
下面是一個例子:

以下是螢屏截圖的文本版本:
ID ID
11 2021/4/15 N 9/11/66 56.9 175 cm 標準測驗 22 N/A
11 2021/7/29 Y 9/11/66 55.7 186 cm 標準測驗 748 N/A 11 2021/7/29 Y TWCOVID 11 1966/11/9 F 高加索人 157 54 否 否
在下面的螢屏截圖中,我想將 ID 為 11 的新資料替換為指示 Y 的行,并將舊資料替換為從 R5 開始并以 APM 結束的新資料。我可以肯定地說,每個新資料的長度與舊資料的長度完全相同。
uj5u.com熱心網友回復:
如果我正確理解您的問題,您可以使用該功能來實作您想要做的事情merge()。做?merge以獲得更多資訊。
重要的是兩個資料框中的列以相同的方式命名
下面的例子:
在這里,您將讀取兩個資料集,然后確保具有匹配資訊的列名與下一個資料集相同(在您的情況下,您需要 ID(“ID”)、日期(“日期”),以及是否合并的決定(“測驗”)以匹配。
library(readxl)
dt1 <- read_excel("path to dataset 1")
dt2 <- read_excel("path to dataset 2")
colnames(dt1)<- c("ID","date","test","DOB","weigth","height","other1","other2","other3")
colnames(dt2)<- c("ID","date","test","variable")
但是為了這個例子,我正在重新創建你的兩個資料集:
dt1 <- data.frame(ID = c(11,11),
date = c("2021/4/15", "2021/7/29"),
test = c("N", "Y"),
DOB = c("9/11/66", "9/11/66"),
weight = c(56.9, 55.7),
heigth = c(175, 186),
other1 = "Standard Test",
other2 = c(22, 748),
other3 = NA)
dt2 <- data.frame(ID = 11,
date = "2021/7/29",
test = "Y",
variable = "TWCOVID")
然后,您可以合并 dt1 和 dt2,通過指定要使用的列(盡管該函式會自動識別列名相同),并指定 all.x = TRUE 表示資料幀 x 中的所有行(第一個)必須保留。根據您想要實作的目標檢查兩者之間的差異all。all.x
dt <- merge(x = dt1, y = dt2[dt2$test == "Y", ], by = c("ID", "date", "test"), all.x = TRUE)
這給了你:(最后一列是你想要的資訊。

然后,匯出到excel:
library(writexl)
write_xlsx(dt)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/485427.html
