总结R中k个变量的正值

Met*_*ics 3 r sum stata

我想首先找到max of 0 or jwhere j是任何变量,然后将这些变量与数据帧的k(k = 1,2,... k)变量相加data.在stata,我做了如下:

 gen sum=max(0,x)+max(0,y)+max(0,z)+...+max(0,k)
Run Code Online (Sandbox Code Playgroud)

R我使用以下方法:

data$sum<-ifelse(data$x<0,0,data$x*1)+ifelse(data$y<0,0,data$y*1)+ifelse(data$z<0,0,data$z*1)+...+ifelse(data$k<0,0,data$k*1)
Run Code Online (Sandbox Code Playgroud)

我想知道是否有另一种有效的方法R来做同样的事情.

flo*_*del 5

试试这个:

mycols   <- c("x", "y", "z", "k")
data$sum <- rowSums(data[mycols] * (data[mycols] > 0))
Run Code Online (Sandbox Code Playgroud)

查看一些示例数据:

data <- data.frame(x = runif(10) - 0.5,
                   y = runif(10) - 0.5,
                   z = runif(10) - 0.5,
                   k = runif(10) - 0.5)

identical(rowSums(data[mycols] * (data[mycols] > 0)), # mine
          ifelse(data$x < 0, 0, data$x * 1) +         # yours
          ifelse(data$y < 0, 0, data$y * 1) +
          ifelse(data$z < 0, 0, data$z * 1) +
          ifelse(data$k < 0, 0, data$k * 1))
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)