【发布时间】:2019-08-03 23:17:47
【问题描述】:
我想组合来自不同列的一些值,这些组合必须根据来自另一列的每个 ID (Ptt)
我尝试了一些东西,但没有任何效果
我想在我的data.frame df 中创建一个新列area,并使用下面的组合,每个组合在这个新列area 中确定一个名称(AR、AM 或 AA)。需要对每个 ID 进行这种组合 (Ptt)
我的df的一个例子:
Ptt bat$depth Latitude Longitude
88734 -500 -18.0490 -38.9485
88734 -750 -19.4095 -39.4320
88734 -800 -19.8043 -40.5436
88734 -490 -20.0543 -40.9095
88734 -300 -21.4085 -41.0954
129041 -1500 -25.0954 -50.4350
129041 -2400 -26.4095 -51.0954
129041 -1200 -27.5309 -51.9053
129041 -1190 -27.7953 -52.5403
129041 -1606 -28.0904 -51.9504
120941 -2000 -29.4985 -52.0590
x <- plyr::ddply(by(df, df["Ptt"],
df$area[df$bat$depth >= -500 & df$Latitude >= -20.0000] <- "AR"
df$area[df$bat$depth <= -500 & df$Latitude >= -20.0000] <- "AR"
df$area[df$bat$depth <= -500 & df$Latitude <= -20.0000] <- "AM"
df$area[df$bat$depth >= -500 & df$Latitude <= -20.0000] <- "AM"
df$area[df$Latitude <= -51.0000] <- "AA"))
x <- plyr::ddply(df, ~Ptt, function(d){
d$area <- NA
d$area[d$bat$depth >= -500 & d$Latitude >= -20.0000] <- "AR"
d$area[d$bat$depth <= -500 & d$Latitude >= -20.0000] <- "AR"
d$area[d$bat$depth <= -500 & d$Latitude <= -20.0000] <- "AM"
d$area[d$bat$depth >= -500 & d$Latitude <= -20.0000] <- "AM"
d$area[d$Latitude <= -51.0000] <- "AA"
})
x <- dplyr::group_by(df,Ptt)%>%
df$area[df$bat$depth >= -500 & df$Latitude >= -20.0000] <- "AR"
df$area[df$bat$depth <= -500 & df$Latitude >= -20.0000] <- "AR"
df$area[df$bat$depth <= -500 & df$Latitude <= -20.0000] <- "AM"
df$area[df$bat$depth >= -500 & df$Latitude <= -20.0000] <- "AM"
df$area[df$Latitude <= -51.0000] <- "AA"
x <- df%>%
dplyr::group_by(Ptt)%>%
df$area[df$bat$depth >= -500 & df$Latitude >= -20.0000] <- "AR"
df$area[df$bat$depth <= -500 & df$Latitude >= -20.0000] <- "AR"
df$area[df$bat$depth <= -500 & df$Latitude <= -20.0000] <- "AM"
df$area[df$bat$depth >= -500 & df$Latitude <= -20.0000] <- "AM"
df$area[df$Latitude <= -51.0000] <- "AA"
library(data.table)
x <- df[,. df$area[df$bat$depth >= -500 & df$Latitude >= -20.0000] <- "AR"
df$area[df$bat$depth <= -500 & df$Latitude >= -20.0000] <- "AR"
df$area[df$bat$depth <= -500 & df$Latitude <= -20.0000] <- "AM"
df$area[df$bat$depth >= -500 & df$Latitude <= -20.0000] <- "AM"
df$area[df$Latitude <= -51.0000] <- "AA" , by = "Ptt"]
我所期望的(这个值不是真实的),只是一个例子:
Ptt bat$depth Latitude Longitude area
88734 -500 -18.0490 -38.9485 AR
88734 -750 -19.4095 -39.4320 AR
88734 -800 -19.8043 -40.5436 AR
88734 -490 -20.0543 -40.9095 AR
88734 -300 -21.4085 -41.0954 AR
129041 -1500 -25.0954 -50.4350 AR
129041 -2400 -26.4095 -51.0954 AR
129041 -1200 -27.5309 -51.9053 AR
129041 -1190 -27.7953 -52.5403 AM
129041 -1606 -28.0904 -51.9504 AM
120941 -2000 -29.4985 -52.0590 AM
谢谢!
【问题讨论】:
-
你能举一个你的数据框和你期望的输出的例子吗?
-
嗨,我在那里编辑过
标签: r dataframe group-by data-analysis