繁体   English   中英

R-替换数据框中的值

[英]R - Replacing values in a dataframe

我有一个data.frame其中包含WIND_CHILLDRY_BULB_TEMPWIND_SPEED WIND_SPEED <= 5我想设置WIND_CHILL = DRY_ BULB TEMP ,因为在这些速度下, WIND_CHILL的公式不能有效地估算温度。 WIND_CHILL是第9列, DRY_BULB_TEMP第4列和WIND_SPEED第7列的data.frame data.frame称为venue 我告诉大家这是为了让您了解我的尝试,这是:

n <- nrow(venue)
for(i in 1:n) {
     if(venue[n,7] <= 5) {
       venue[n,9] <- venue[n,4]
     }
}

有任何想法吗??

由于您没有提供data.frame ,因此我必须从头开始:P。

venue[venue$WIND_SPEED<=5,"WIND_CHILL"]=venue[venue$WIND_SPEED<=5,"DRY_BULB_TEMP"]

要么:

venue[venue$WIND_SPEED<=5,9]=venue[venue$WIND_SPEED<=5,4]

因此,我无权访问您的数据集,因此我不得不举一个简单的示例。

x1<-rnorm(100,mean=0,sd=10)
x2<-rep(0,100)
x3<-rep(1,100)

df<-data.frame(x1,x2,x3)

summary(df$x2)

#overwrite x2 for values of x1 less than 3 
df$x2[ which(df$x1 < 3) ] <- 1

summary(df$x2)

summary(df$x3)
#overwrite x3 for values of x1 >= 3
df$x3[ which(df$x1 >= 3) ] <- 0

summary(df$x3)

您会注意到,我们有一个包含3个变量的数据框。 x1是随机变量,x2和x3是x1的标称值(如果x1 <3,x2应该为1,如果x1> = 3,x3应该为0)。 运行此命令时,您会注意到使用which语句有助于有选择地覆盖值,因为它返回需要覆盖的索引。

> x1<-rnorm(100,mean=0,sd=10)
> x2<-rep(0,100)
> x3<-rep(1,100)
> 
> df<-data.frame(x1,x2,x3)
> 
> summary(df$x2)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      0       0       0       0       0       0 
> 
> #overwrite x2 for values of x1 less than 3 
> df$x2[ which(df$x1 < 3) ] <- 1
> 
> summary(df$x2)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   0.00    0.00    1.00    0.58    1.00    1.00 
> 
> summary(df$x3)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1       1       1       1       1       1 
> #overwrite x3 for values of x1 >= 3
> df$x3[ which(df$x1 >= 3) ] <- 1
> 
> summary(df$x3)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1       1       1       1       1       1 
> x1<-rnorm(100,mean=0,sd=10)
> x2<-rep(0,100)
> x3<-rep(1,100)
> 
> df<-data.frame(x1,x2,x3)
> 
> summary(df$x2)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      0       0       0       0       0       0 
> 
> #overwrite x2 for values of x1 less than 3 
> df$x2[ which(df$x1 < 3) ] <- 1
> 
> summary(df$x2)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   0.00    0.00    1.00    0.63    1.00    1.00 
> 
> summary(df$x3)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
      1       1       1       1       1       1 
> #overwrite x3 for values of x1 >= 3
> df$x3[ which(df$x1 >= 3) ] <- 0
> 
> summary(df$x3)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   0.00    0.00    1.00    0.63    1.00    1.00 

暂无
暂无

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

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