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