gpt4 book ai didi

r - 如何将 na.locf() 用于因子 'inputs' ?

转载 作者:行者123 更新时间:2023-12-02 07:59:51 24 4
gpt4 key购买 nike

我想根据该 ID 本身前几年的组值将我的数据集的 NA 填充到组变量中。na.locf(newData, na.rm = TRUE) 部分代码不起作用。我认为这是因为输入不是数字。或者是另一回事?有谁知道如何解决这个问题?

  for (i in my_data$ID){
newData = my_data[my_data$ID==i,c('ID','Year', 'group')][3]
na.locf(newData,na.rm = TRUE)

}

我的数据集非常大。但我提供这个作为我需要的样本:

structure(list(ID = c(1L, 2L, 3L, 1L, 1L, 1L), Year = c(2000L, 
2000L, 2001L, 2001L, 2002L, 2003L), Group = structure(c(2L, 3L,
2L, 1L, 1L, 4L), .Label = c("", "\"A\"", "\"B\"", "\"C\""), class = "factor")), row.names = c(NA,
6L), class = "data.frame")

结果应该是这样的:

structure(list(ID = c(1L, 1L, 1L, 1L, 2L, 2L), Year = c(2000L, 
2001L, 2002L, 2003L, 2000L, 2002L), Group = structure(c(1L, 1L,
1L, 3L, 2L, 2L), .Label = c("\"A\"", "\"B\"", "\"C\""), class = "factor")), row.names = c(NA,
6L), class = "data.frame")

最佳答案

正如我所说,您的问题很简单,就是您必须用 NA 替换空瓶。

with(replace(df, df == '', NA), ave(Group, ID, FUN = zoo::na.locf))
#[1] "A" "B" "A" "A" "A" "C"

将它附加回你的 df,

df$Group <- with(replace(df, df == '', NA), ave(Group, ID, FUN = zoo::na.locf))

这给出了,

  ID Year Group
1 1 2000 "A"
2 2 2000 "B"
3 3 2001 "A"
4 1 2001 "A"
5 1 2002 "A"
6 1 2003 "C"

关于r - 如何将 na.locf() 用于因子 'inputs' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58853946/

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