如果在间隔中,数据框中的值为零
values in dataframe to zero if in interval
我还是 R 的新手,我试图将数据框中的值设为零,如果它们在 IR e {-0,5: 0,5} 区间内
数据框如下所示:
var1 var2 var3
1 -0.2 1.0 0.7
2 0.2 -0.5 -0.2
3 1.0 0.2 3.0
4 0.5 2.0 4.0
5 -0.7 4.0 0.3
我只找到一种简单的解决方案(例如 < 0.5):
dat[< 0.5] <- 0
但是 dat[ >-0.5 & <0.5] <- 0 不起作用。
我找到了解决方案,但是这个不是很优雅:
var1 <- c(-0.2,0.2,1,0.5,-0.7)
var2 <- c(1,-0.5,0.2,2,4)
var3 <- c(0.7,-0.2,3,4,0.3)
dat <- data.frame(var1, var2, var3)
Rows <- length(dat[,1])
Cols <- length(dat[1,])
for (i in 1:Rows) {
for (j in 1:Cols)
if (dat[i,j] < 0.5 & dat[i,j] > -0.5){dat[i,j] = 0}
}
数据框的结果:
var1 var2 var3
1 0.0 1.0 0.7
2 0.0 -0.5 0.0
3 1.0 0.0 3.0
4 0.5 2.0 4.0
5 -0.7 4.0 0.0
你能帮我找到一个更优雅的解决这个问题的方法吗?
非常感谢您的帮助。
Instead of creating the data frame with a for loop, you can use ``data.frame``:
var1 <- c(-0.2,0.2,1,0.5,-0.7)
var2 <- c(1,-0.5,0.2,2,4)
var3 <- c(0.7,-0.2,3,4,0.3)
dat<-data.frame(var1=var1,var2=var2,var3=var3)
To replace values based on your conjunction do:
dat[dat>-0.5 & dat<0.5]=0
您还可以查看 tidyverse
或 dplyr
包,它们使数据处理更容易。
为什么不呢:
> dat[ abs(dat) < 0.5] <- 0
> dat
var1 var2 var3
1 0.0 1.0 0.7
2 0.0 -0.5 0.0
3 1.0 0.0 3.0
4 0.5 2.0 4.0
5 -0.7 4.0 0.0
我还是 R 的新手,我试图将数据框中的值设为零,如果它们在 IR e {-0,5: 0,5} 区间内 数据框如下所示:
var1 var2 var3
1 -0.2 1.0 0.7
2 0.2 -0.5 -0.2
3 1.0 0.2 3.0
4 0.5 2.0 4.0
5 -0.7 4.0 0.3
我只找到一种简单的解决方案(例如 < 0.5):
dat[< 0.5] <- 0
但是 dat[ >-0.5 & <0.5] <- 0 不起作用。
我找到了解决方案,但是这个不是很优雅:
var1 <- c(-0.2,0.2,1,0.5,-0.7)
var2 <- c(1,-0.5,0.2,2,4)
var3 <- c(0.7,-0.2,3,4,0.3)
dat <- data.frame(var1, var2, var3)
Rows <- length(dat[,1])
Cols <- length(dat[1,])
for (i in 1:Rows) {
for (j in 1:Cols)
if (dat[i,j] < 0.5 & dat[i,j] > -0.5){dat[i,j] = 0}
}
数据框的结果:
var1 var2 var3
1 0.0 1.0 0.7
2 0.0 -0.5 0.0
3 1.0 0.0 3.0
4 0.5 2.0 4.0
5 -0.7 4.0 0.0
你能帮我找到一个更优雅的解决这个问题的方法吗? 非常感谢您的帮助。
Instead of creating the data frame with a for loop, you can use ``data.frame``:
var1 <- c(-0.2,0.2,1,0.5,-0.7)
var2 <- c(1,-0.5,0.2,2,4)
var3 <- c(0.7,-0.2,3,4,0.3)
dat<-data.frame(var1=var1,var2=var2,var3=var3)
To replace values based on your conjunction do:
dat[dat>-0.5 & dat<0.5]=0
您还可以查看 tidyverse
或 dplyr
包,它们使数据处理更容易。
为什么不呢:
> dat[ abs(dat) < 0.5] <- 0
> dat
var1 var2 var3
1 0.0 1.0 0.7
2 0.0 -0.5 0.0
3 1.0 0.0 3.0
4 0.5 2.0 4.0
5 -0.7 4.0 0.0