繁体   English   中英

从R中的数据帧中提取信息

[英]Extracting information from a data frame in R

我已经考虑过一些解决此编码问题的方法,但到目前为止,还没有任何结果。 我知道子集函数,但似乎不足以执行下面的确切任务。

给定下面的数据帧A,我希望获得第二个数据帧,其中每个类别更改为零的负数最接近零。 例如,对于类别A1,对于类别B10,我们将-4更改为零,对于-3最接近于零,因此将其更改为零,依此类推。

例如:

x_1 <- c("A1", "A1", "B10", "B10", "B10", "C100", "C100", "C100")
y_1 <- c(1, -4, -10, -3, 5, 8, -9, -11)
A <- data.frame(x_1, y_1)

x_2 <-  c("A1", "A1", "B10", "B10", "B10", "C100", "C100", "C100")
y_2 <- c(1, 0, -10, 0, 5, 8, 0, -11)
B <- data.frame(x_2, y_2)

如您所见,我只希望将y_2中最接近零的负数更改为零,而其他数可以保持不变。 这似乎是一个简单的编码任务,对此我将不胜感激。

谢谢

x_1 <- c("A1", "A1", "B10", "B10", "B10", "C100", "C100", "C100")
y_1 <- c(1, -4, -10, -3, 5, 8, -9, -11)
A <- data.frame(x_1, y_1)

x_2 <-  c("A1", "A1", "B10", "B10", "B10", "C100", "C100", "C100")
y_2 <- c(1, 0, -10, 0, 5, 8, 0, -11)
B <- data.frame(x_2, y_2)

像这样吗

library(plyr)
tmpfun <- function(d) {
    negy <- d[,2]<0    ## negative values
    w <- which.max(d[negy,2])  ## closest to zero
    d[negy,2][w] <- 0
    d
}
ddply(A,"x_1",tmpfun)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM