如何在 R 中将数据框的行值除以每行中不包括 0 的最大值?


为了在 R 中将数据框的行值除以不包括 0 的行最大值,我们可以按照以下步骤操作:

  • 首先,创建一个数据框。
  • 然后,使用 apply 函数和 if else 函数将数据框的行值除以不包括 0 的行最大值。

创建数据框

让我们创建一个如下所示的数据框:

 实时演示

x<-sample(0:2,25,replace=TRUE)
y<-sample(0:2,25,replace=TRUE)
z<-sample(0:2,25,replace=TRUE)
df<-data.frame(x,y,z)
df

执行上述脚本后,将生成以下输出(由于随机化,此输出在您的系统上可能会有所不同):

  x y z
1 0 0 1
2 1 0 0
3 0 0 0
4 1 0 1
5 0 0 2
6 2 0 1
7 1 2 0
8 2 0 2
9 0 2 1
10 0 2 0
11 1 2 0
12 2 2 1
13 0 0 1
14 1 1 0
15 2 1 2
16 2 0 2
17 2 1 0
18 0 0 0
19 0 0 0
20 1 2 2
21 2 0 1
22 2 0 2
23 2 1 2
24 0 2 1
25 0 2 2

将数据框的行值除以不包括 0 的行最大值

使用 apply 函数将 df 的行值除以不包括 0 的行最大值:

 实时演示

x<-sample(0:2,25,replace=TRUE)
y<-sample(0:2,25,replace=TRUE)
z<-sample(0:2,25,replace=TRUE)
df<-data.frame(x,y,z)
df_new<-t(apply(df,1, function(x) if (0 %in% x) x else x/max(x)))
df_new

输出

      x   y    z
[1,] 0.0 0.0 1.0
[2,] 1.0 0.0 0.0
[3,] 0.0 0.0 0.0
[4,] 1.0 0.0 1.0
[5,] 0.0 0.0 2.0
[6,] 2.0 0.0 1.0
[7,] 1.0 2.0 0.0
[8,] 2.0 0.0 2.0
[9,] 0.0 2.0 1.0
[10,] 0.0 2.0 0.0
[11,] 1.0 2.0 0.0
[12,] 1.0 1.0 0.5
[13,] 0.0 0.0 1.0
[14,] 1.0 1.0 0.0
[15,] 1.0 0.5 1.0
[16,] 2.0 0.0 2.0
[17,] 2.0 1.0 0.0
[18,] 0.0 0.0 0.0
[19,] 0.0 0.0 0.0
[20,] 0.5 1.0 1.0
[21,] 2.0 0.0 1.0
[22,] 2.0 0.0 2.0
[23,] 1.0 0.5 1.0
[24,] 0.0 2.0 1.0
[25,] 0.0 2.0 2.0

更新于:2021 年 8 月 14 日

295 次查看

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告