如何将数据框行值除以每行中的最大值(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

执行时,上述脚本生成以下内容output(this output will vary on your system due to randomization)-

  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

猜你喜欢