我有兩個dataframes,看房子(N = 6)和特定日期(N = 22)。- [R比較列跨越Dataframes到匹配值
ORIGINAL是原始數據集。它包含對5個變量的38個觀察值。並非所有房屋都列出了所有日期,反之亦然,導致計算時出現不同長度變量的錯誤。
樣本是一個新的空數據集。它包含132個(6×22)對同樣5個變量的觀察。現在每個家庭都有一個觀察每個日期。
家貓鼬日水果大象
A 1 40 7 0.6 A 6 32 12 4.2 B 2 50 3 4.0 B 4 51 4 8.6 B 6 8 7 12.1 C 2 12 8 13.0
我試圖問R鍵兩個dataframes之間比較HouseID和日期填寫樣品的休息;如果它們匹配,其他變量(貓鼬,水果,大象)應該被複制以用於該觀察。
我想這無濟於事......
for(i in 1:nrow(original))
{
if ((sample$Day == original$Day) && (sample$House == original$House))
{
sample$Mongoose[i] <- original$Mongoose[i]
sample$Fruit[i] <- original$Fruit[i]
sample$Elephant[i] <- original$Elephant[i]
}
}
以下結果:
我得到以下3個錯誤的序列
在樣品$日==測試$天:較長物體長度不 較短對象長度的倍數
In is.na(e1)| is.na(E2):較長的對象長度不
較短對象長度的倍數- 在
==.default
(樣品$樓,測試$樓):較長的對象長度是
不短對象長度 的倍數
的數據並複製過來,但不正確。所有的價值被轉移到A房子和順序日期,而不是適當的房子和日期。
即,它看起來像這樣
House Day Mongoose Fruit Elephant
A 1 40 7 0.6
A 2 50 3 4.0
A 3 51 4 8.6
A 4 8 7 12.1
A 5 12 8 13.0
A 6 32 12 4.2
B 1
B 2
B 3 [...]
當應(本質)是這樣的:
House Day Mongoose Fruit Elephant
A 1 40 7 0.6
A 2
A 3
A 4
A 5
A 6 32 12 4.2 [rest of A houses have no data]
B 1
B 2 50 3 4.0
B 3
B 4 51 4 8.6
B 5
B 6 8 7 12.1 [rest of B houses have no data]
C 1
C 2 12 8 13.0
請告知;我最終必須擴展這種技術,以查看具有198K條目的樣本數據集和115K的測試數據集。
謝謝!
你可以舉一個例子,說明你的例子中'Original'的樣子嗎? – user295691
以上所以我可以很好地格式化 – Sheegor
更改'((樣本$天==原始$日)&&(樣本$房子==原始$房子))'''(樣本$天[i] ==原始$ Day [i])&&(樣本$ House [i] ==原始$ House [i]))'可能會工作 –