簡體   English   中英

根據條件 R 將數據幀的元素添加到另一個數據幀

[英]Add Elements of Data Frame to Another Data Frame Based on Condition R

我有兩個數據框,分別展示了一個月和下個月的分析結果。

這是數據的較小版本:

Jan19=data.frame(Group=c(589,630,523,581,689),Count=c(191,84,77,73,57))
Dec18=data.frame(Group=c(589,630,523,478,602),Count=c(100,90,50,6,0))

Jan19
  Group Count
1   589   191
2   630    84
3   523    77
4   581    73
5   689    57

Dec18
  Group Count
1   589   100
2   630    90
3   523    50
4   478     6
5   602     0

Jan19 只有計數 >0。 Dec18 是包含上個月結果的數據集。 Dec18 的每組計數 >=0。 我一直在為 counts =0 引用完整的 Dec18 數據集,並手動將它們輸入到完整的 Jan18 數據集中。 我想擺脫本練習的手動部分,只需能夠將 counts = 0 的組附加到 Jan19 數據集的末尾。

這導致我使用以下代碼來執行我上面描述的內容:

GData=rbind(Jan19,Dec18)
GData=GData[!duplicated(GData$Group),]

雖然此代碼導致了更正尺寸,但它不會選擇要刪除的正確副本。 在附加的數據集中,它將 Jan19 結果>0 視為重復項並將其刪除。 這是結果:

Gdata
   Group Count
1    589   191
2    630    84
3    523    77
4    581    73
5    689    57
9    478     6
10   602     0

本質上,我希望 6 顯示為 0。因此,如果新的附加數據(12 月 18 日)與較新的數據(1 月 19 日)有重復的組,我將轉到以下代碼行,我想在其中設置條件),那么對應的 Count 應該=0。 否則,來自 Jan19 數據集的 count 值應該保持不變。

Gdata=ifelse(Dec18$Group %in% Jan19$Group==FALSE, Gdata$Count==0,Jan19$Count)

這會導致錯誤,我不確定如何修改它以達到我想要的結果。 任何幫助,將不勝感激!

您的rbind /重復數據刪除方法是一個很好的方法,您只需要rbindDec18數據即可將Count列設為 0:

Gdata = rbind(Jan19, transform(Dec18, Count = 0))
Gdata[!duplicated(Gdata$Group), ]
#    Group Count
# 1    589   191
# 2    630    84
# 3    523    77
# 4    581    73
# 5    689    57
# 9    478     0
# 10   602     0

雖然此代碼導致了更正尺寸,但它不會選擇要刪除的正確副本。 在附加的數據集中,它將Jan19結果>0 視為重復項並將其刪除。 這是結果:

這是不正確的。 !duplicated()將保留第一次出現並刪除以后出現的。 沒有刪除Jan19數據---我們可以看到Gdata的前 5 行正好是Jan19的 5 行。 唯一的問題是來自Dec18的非重復行並非都是 0 計數。 我們用transform()解決了這個問題。


還有很多其他的方法可以做到這一點,有一個連接使用merge功能,我們只能rbind的非重復組為DB表明, rbind(Jan19, transform(Dec18, Count = 0)[!Dec18$Group %in% Jan19$Group,]) ,還有其他的。 我們可以讓你的ifelse方法像這樣工作:

Gdata = rbind(Jan19, Dec18)
Gdata$Count = ifelse(!Dec18$Group %in% Jan19$Group, 0, Gdata$Count)

# an alternative to ifelse, a little cleaner
Gdata = rbind(Jan19, Dec18)
Gdata$Count[!Gdata$Group %in% Jan19$Group] = 0

使用對您最有意義的任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM