In diesem Artikel erfahren Sie, wie Sie die Werte in Zeilen basierend auf den Spaltenwerten in Dataframe in der Programmiersprache R ändern.

Syntax: df[Ausdruck ,] <- newrowvalue

Argumente : 

  • df – Datenrahmen zum Simulieren der Änderung
  • Ausdruck – Ausdruck zum Auswerten der Zellendaten basierend auf einem Spaltenwert
  • newrowvalue – Der geänderte Wert, durch den der alte Wert ersetzt werden soll

Returns : Gibt nichts zurück, nimmt aber Änderungen am Datenrahmen vor. 

Das folgende Code-Snippet ist ein Beispiel für das Ändern des Zeilenwerts basierend auf einem Spaltenwert in R. Es prüft, ob in der C3-Spalte der Zellenwert kleiner als 11 ist, es ersetzt den entsprechenden Zeilenwert und behält die Spalte mit NA bei. Dieser Ansatz benötigt eine quadratische Zeit, die den Abmessungen des Datenrahmens entspricht. 

Beispiel:

R

# 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)

Ausgabe:

[1] „Originaldatenrahmen“

 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] „Geänderter Datenrahmen“

 C1 C2 C3 C4

1 5 1 nicht zutreffend 13

2 6 2 nicht zutreffend 14

3 7 3 11 15

4 8 4 12 16

Dieser Ansatz kann optimiert werden, falls wir den Indexwert der Spalte kennen, um die Auswertung durchzuführen. In diesem Fall iterieren wir nicht über den gesamten Datenrahmen, sondern nur über die Spaltenwerte. 

Beispiel:

R

# 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)

Ausgabe:

[1] „Originaldatenrahmen“

 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] „Geänderter Datenrahmen“

 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 bietet auch eine integrierte Möglichkeit, diese Zeilentransformationen zu handhaben, indem einfach die auszuwertende Bedingung als Zeilenindex des Datenrahmens angegeben wird. Die neu zugewiesenen Werte werden innerhalb des Datenrahmens ersetzt. Eine explizite Iteration über den Datenrahmen ist in diesem Fall nicht erforderlich. 

Beispiel:

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)

Ausgabe:

[1] „Originaldatenrahmen“

 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] „Geänderter Datenrahmen“

 C1 C2 C3 C4

1 3 3 3 3

2 3 3 3 3

3 3 3 3 3

4 3 3 3 3