【发布时间】:2015-10-06 15:17:48
【问题描述】:
我有两个数据框,分别查看房屋 (n=6) 和某些日期 (n=22)。
ORIGINAL 是原始数据集。它包含对 5 个变量的 38 个观察值。并非所有房屋都列出了所有日期,反之亦然,导致不同长度变量的计算错误。
-
SAMPLE 是一个新的空数据集。它包含对相同 5 个变量的 132 (6 x 22) 个观测值。现在每个日期都有每个家庭的观察结果。
宅日獴果象
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 比较两个数据帧之间的 HouseID 和 Date 来填写 SAMPLE 的其余部分;如果它们匹配,则应复制其余变量(猫鼬、水果、大象)以进行该观察。
我试过这个没有用...
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 个错误
在 sample$Day == test$Day 中:较长的对象长度不是 更短的对象长度
在 is.na(e1) | is.na(e2) :更长的对象长度不是的倍数
更短的对象长度- 在
==.default(sample$House, test$House) 中:更长的对象长度是
不是较短对象长度的倍数
数据确实复制了,但不正确。所有值都转移到 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在你的例子中是什么样子吗? -
在上面发帖,以便我可以很好地格式化它
-
将
((sample$Day == original$Day) && (sample$House == original$House))更改为((sample$Day[i] == original$Day[i]) && (sample$House[i] == original$House[i]))可能会起作用 -
@CactusWoman 我随后收到“需要 TRUE/FALSE 的缺失值”的错误