R语言 如何根据R数据框架中的列值来改变行的值

R语言 如何根据R数据框架中的列值来改变行的值

在这篇文章中,我们将看到如何在R编程语言中根据数据框架中的列值来改变行的值。

语法: df[expression ,] <- newrowvalue

参数:

  • df – 要模拟修改的数据框架
  • expression – 基于列值评估单元格数据的表达式
  • newrowvalue – 用于替换旧值的修改值。

返回: 不返回任何东西,但会对数据框进行修改。

下面的代码片段是一个根据R中的列值改变行值的例子。它检查C3列中的单元格值是否小于11,它替换了相应的行值,保持列中的NA不变。这种方法需要相当于数据框架尺寸的二次方时间。

例子

# declaring a data frame in R
data_frame = data.frame(C1= c(5:8),C2 = c(1:4),
                        C3 = c(9:12),C4 =c(13:16))
  
print("Original data frame")
print(data_frame)
  
# replace the row value with NA if the col 
# value in C3 is less than 11 looping over 
# the data frame values
for (i in 1:nrow(data_frame)){
for(j in 1:ncol(data_frame)) {       
          
    # checking if the column is C3 that is 
      # j index is 3
    if(j==3){
          
        # checking if the row value of c3 is
        # less than 11
        if(data_frame[i,j]<11){
              
            # changing the row value in the 
            # data frame
            data_frame[i,j] <- NA
            }
        }    
    }
}
  
# printing modified data frame
print ("Modified data frame")
print (data_frame)

输出

[1] “Original data frame”

C1 C2 C3 C4

1  5  1  9 13

2  6  2 10 14

3  7  3 11 15

4  8  4 12 16

[1] “Modified data frame”

C1 C2 C3 C4

1  5  1 NA 13

2  6  2 NA 14

3  7  3 11 15

4  8  4 12 16

如果我们知道要进行评估的列的索引值,这种方法可以被优化。在这种情况下,我们将不在整个数据框架上进行迭代,而只在列值上进行迭代。

例子

# declaring a data frame in R
data_frame = data.frame(C1= c(5:8),C2 = c(1:4),
                        C3 = c(9:12),C4 =c(13:16))
  
print("Original data frame")
print(data_frame)
  
# replace the row value with 0 if the
# data element at col index 2 is divisible 
# by 2 looping over the rows of data frame
for (i in 1:nrow(data_frame)){
      
    # iterate over the 2nd column only of the
    # data frame and check if divisible by 2
    if(data_frame[i,2]%%2){
           
        # replace the value with 0
        data_frame[i,2]<-0
        }
}
  
# printing modified data frame
print ("Modified data frame")
print (data_frame)

输出

[1] “Original data frame”

C1 C2 C3 C4

1  5  1  9 13

2  6  2 10 14

3  7  3 11 15

4  8  4 12 16

[1] “Modified data frame”

C1 C2 C3 C4

1  5  0  9 13

2  6  2 10 14

3  7  0 11 15

4  8  4 12 16

R还提供了一种内置的方法来处理这些行的转换,只需将要评估的条件指定为数据帧的行索引。重新分配的值在数据框中被替换。在这种情况下,不需要对数据框进行明确的迭代。

例子

# declaring a data frame in R
data_frame = data.frame(C1= c(1,2,2,1),C2 = c(1:4),
                        C3 = c(9:12),C4 =c(13:16))
  
print("Original data frame")
print(data_frame)
  
# check if c1 value is greater than
# equal to 1, replaced by 3
data_frame[data_frame$C1>=1 ,] <- 3
  
print("Modified data frame")
print(data_frame)

输出

[1] “Original data frame”

C1 C2 C3 C4

1  1  1  9 13

2  2  2 10 14

3  2  3 11 15

4  1  4 12 16

[1] “Modified data frame”

C1 C2 C3 C4

1  3  3  3  3

2  3  3  3  3

3  3  3  3  3

4  3  3  3  3

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程