如果 R 数据框中的值大于某个特定值,则替换所有这些值。


如果要替换 R 数据框中所有大于某个特定值的值,我们可以使用 apply 函数和 ifelse 函数。

例如,如果我们有一个名为 df 的数据框,并且我们希望将 df 中所有大于 10 的值替换为 5,那么我们可以使用以下命令:

df[]<-apply(df,2,function(x) ifelse(x0,1,x))

示例 1

以下代码片段创建了一个示例数据框:

x1<-rpois(20,1)
x2<-rpois(20,1)
x3<-rpois(20,1)
df1<-data.frame(x1,x2,x3)
df1

创建了以下数据框

 x1 x2 x3
 1 1 0 1
 2 1 0 0
 3 1 1 0
 4 2 1 1
 5 0 0 0
 6 0 0 0
 7 1 2 1
 8 2 0 0
 9 1 0 2
10 0 1 1
11 3 1 0
12 0 1 1
13 3 0 0
14 2 0 1
15 0 1 2
16 1 0 1
17 0 3 1
18 0 0 1
19 1 2 1
20 0 1 1

要在上面创建的数据框中将 df1 中所有大于 0 的值替换为 1,请将以下代码添加到上述代码片段中:

x1<-rpois(20,1)
x2<-rpois(20,1)
x3<-rpois(20,1)
df1<-data.frame(x1,x2,x3)
df1[]<-apply(df1,2,function(x) ifelse(x0,1,x))
df1

输出

如果您将以上所有代码片段作为单个程序执行,它将生成以下输出:

    x1 x2 x3
 [1,] 1 0 1
 [2,] 1 0 0
 [3,] 1 1 0
 [4,] 1 1 1
 [5,] 0 0 0
 [6,] 0 0 0
 [7,] 1 1 1
 [8,] 1 0 0
 [9,] 1 0 1
[10,] 0 1 1
[11,] 1 1 0
[12,] 0 1 1
[13,] 1 0 0
[14,] 1 0 1
[15,] 0 1 1
[16,] 1 0 1
[17,] 0 1 1
[18,] 0 0 1
[19,] 1 1 1
[20,] 0 1 1

示例 2

以下代码片段创建了一个示例数据框:

y1<-round(rnorm(20),1)
y2<-round(rnorm(20),1)
y3<-round(rnorm(20),1)
df2<-data.frame(y1,y2,y3)
df2

创建了以下数据框

     y1   y2   y3
 1 -0.9 -0.2 -1.0
 2  0.8  0.0  0.0
 3 -0.2  0.6 -1.2
 4 -0.5  0.5  1.2
 5  1.1  1.2  1.2
 6 0.2  -1.2  0.4
 7 -2.2 -0.4  1.6
 8 -0.7  0.0 -0.2
 9 -0.4  1.1 -1.7
10  0.0 -1.0  0.6
11  0.1 -1.3 -0.1
12  0.7  0.0 -2.2
13  0.8 -0.1  0.5
14 -1.1 -0.3 -1.2
15 -0.4  1.3 -0.5
16  1.7  0.0 -0.3
17 -0.4 -2.4 -0.9
18 -0.5  2.1  0.6
19  0.2  1.1 -1.7
20 -0.3  0.1 -0.7

要在上面创建的数据框中将 df2 中所有大于 0.1 的值替换为 0.5,请将以下代码添加到上述代码片段中:

y1<-round(rnorm(20),1)
y2<-round(rnorm(20),1)
y3<-round(rnorm(20),1)
df2<-data.frame(y1,y2,y3)
df2[]<-apply(df2,2,function(x) ifelse(x0.1,0.5,x))
df2

输出

如果您将以上所有代码片段作为单个程序执行,它将生成以下输出:

     y1    y2  y3
 1 -0.9 -0.2 -1.0
 2  0.5  0.0  0.0
 3 -0.2  0.5 -1.2
 4 -0.5  0.5  0.5
 5  0.5  0.5  0.5
 6  0.5 -1.2  0.5
 7 -2.2 -0.4  0.5
 8 -0.7  0.0 -0.2
 9 -0.4  0.5 -1.7
10  0.0 -1.0  0.5
11  0.1 -1.3 -0.1
12  0.5  0.0 -2.2
13  0.5 -0.1  0.5
14 -1.1 -0.3 -1.2
15 -0.4  0.5 -0.5
16  0.5  0.0 -0.3
17 -0.4 -2.4 -0.9
18 -0.5  0.5  0.5
19  0.5  0.5 -1.7
20 -0.3  0.1 -0.7

更新时间: 2021-11-09

2K+ 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告