gpt4 book ai didi

R合并数据框中的行

转载 作者:行者123 更新时间:2023-12-01 06:08:48 25 4
gpt4 key购买 nike

这是head大数据框

head(Hdata_soil)
X_id timestamp address rssi batt_v soil_temp_1 soil_temp_2 soil_temp_3 soil_moisture_1
1 565846060dd8e408e3817c58 2015-11-27 12:01:10 A8 -65 NA NA NA NA NA
2 565846070dd8e408e3817c59 2015-11-27 12:01:11 A8 NA NA 9.73 -273.15 14.63 647
3 565846cf0dd8e408e3817caf 2015-11-27 12:04:31 A7 -64 NA NA NA NA NA
4 565846cf0dd8e408e3817cb0 2015-11-27 12:04:31 A7 NA NA 8.56 9.46 9.64 660
5 565847650dd8e408e3817cf5 2015-11-27 12:07:01 A8 -64 NA NA NA NA NA
6 565847660dd8e408e3817cf6 2015-11-27 12:07:02 A8 NA NA 9.82 -273.15 14.29 643

完整数据集可以从 dropbox 访问

如您所见,每个 address 有 2 个连续观测值与 timestamps相隔约 1 秒。变量在这 2 个观察值之间拆分。我怎样才能将它们合并成一行,同时保留第一个 timestamp ?

确保这仅发生在来自同一 address 的连续 2 次观察中也很棒。 .

如果有人能就要使用的包/功能向我指出正确的方向,我将不胜感激。

最佳答案

首先,我认为您的数据需要一个额外的 id 列,因为 address每行对不是唯一的,考虑到您希望如何对它们进行分组,任何其他列也不是唯一的。为简单起见,我将定义 id此处列为:

df$id <- as.character(c(1,1,2,2,3,3))

然后我们可以进行以下操作
# Replace NA's by 0
df[is.na(df)] <- 0

# Extract numeric columns
tokeep <- which(sapply(df,is.numeric))

# Sum numeric columns per id
setDT(df)[,lapply(.SD,sum),by=id,.SDcols = tokeep]

其中产生:
   id rssi soil_temp_1 soil_temp_2 soil_temp_3 soil_moisture_1
1: 1 -65 9.73 -273.15 14.63 647
2: 2 -64 8.56 9.46 9.64 660
3: 3 -64 9.82 -273.15 14.29 643

因此,您可以将其与原始 df 的其余非数字列合并,选择要删除的唯一值 X_idtimestamp .

关于R合并数据框中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34655259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com