为 R 数据框中的每一行查找具有最大值的列名称。
要查找R数据框中每一行具有最大值的列名称,我们可以使用colnames函数和apply函数。
例如,如果我们有一个名为df的数据框,那么我们可以使用以下命令找到每行具有最大值的列名-
df$Largest_Column<-colnames(df)[apply(df,1,which.max)]
示例1
以下代码段创建了一个示例数据框-
x1<-rnorm(20) x2<-rnorm(20) x3<-rnorm(20) df1<-data.frame(x1,x2,x3) df1
创建了以下数据框
x1 x2 x3 1 -0.305888032 1.42530072 -0.60397460 2 0.077412581 1.33102088 1.09897001 3 -0.001797155 1.85365113 0.59881492 4 -0.235863387 -0.11476965 -0.23914040 5 0.641954539 -0.80069293 1.78915326 6 1.662750089 -0.48168001 -1.63141513 7 1.393413983 -0.21044222 -0.36966594 8 0.387820650 0.04998259 -0.88707049 9 -0.982245543 -1.04089646 1.51510464 10 1.540251727 -0.24360161 -0.72272136 11 0.871043177 -1.61258877 -0.08300941 12 0.894436819 1.22285505 0.25353571 13 -0.706468609 0.37879788 1.09617879 14 1.366866702 -2.36429211 0.47667869 15 0.827015705 -0.29348558 2.57175974 16 -0.709173752 -0.68338183 -0.15060505 17 0.464121383 -0.41577526 -1.52947993 18 -0.322493725 0.46212973 1.38418790 19 0.588932732 -1.98841476 0.43082069 20 -0.775650742 -0.45247281 0.62378543
要在上面创建的数据框中找到df1中每一行具有最大值的列名称,请将以下代码添加到上面的代码段中-
x1<-rnorm(20) x2<-rnorm(20) x3<-rnorm(20) df1<-data.frame(x1,x2,x3) df1$Largest_Column<-colnames(df1)[apply(df1,1,which.max)] df1输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
x1 x2 x3 Largest_Column 1 -0.305888032 1.42530072 -0.60397460 x2 2 0.077412581 1.33102088 1.09897001 x2 3 -0.001797155 1.85365113 0.59881492 x2 4 -0.235863387 -0.11476965 -0.23914040 x2 5 0.641954539 -0.80069293 1.78915326 x3 6 1.662750089 -0.48168001 -1.63141513 x1 7 1.393413983 -0.21044222 -0.36966594 x1 8 0.387820650 0.04998259 -0.88707049 x1 9 -0.982245543 -1.04089646 1.51510464 x3 10 1.540251727 -0.24360161 -0.72272136 x1 11 0.871043177 -1.61258877 -0.08300941 x1 12 0.894436819 1.22285505 0.25353571 x2 13 -0.706468609 0.37879788 1.09617879 x3 14 1.366866702 -2.36429211 0.47667869 x1 15 0.827015705 -0.29348558 2.57175974 x3 16 -0.709173752 -0.68338183 -0.15060505 x3 17 0.464121383 -0.41577526 -1.52947993 x1 18 -0.322493725 0.46212973 1.38418790 x3 19 0.588932732 -1.98841476 0.43082069 x1 20 -0.775650742 -0.45247281 0.62378543 x3
示例2
以下代码段创建了一个示例数据框-
y1<-rpois(20,5) y2<-rpois(20,5) y3<-rpois(20,5) y4<-rpois(20,5) df2<-data.frame(y1,y2,y3,y4) df2
创建了以下数据框
y1 y2 y3 y4 1 4 5 4 8 2 6 6 8 5 3 4 7 5 4 4 8 2 7 7 5 3 6 5 0 6 4 5 4 7 7 6 1 2 9 8 5 4 3 5 9 9 5 6 5 10 8 3 7 9 11 5 14 7 5 12 4 7 4 4 13 9 3 1 2 14 5 8 9 4 15 2 7 2 5 16 4 3 3 5 17 4 6 4 4 18 7 6 4 4 19 12 6 8 4 20 6 6 4 5
要在上面创建的数据框中找到df2中每一行具有最大值的列名称,请将以下代码添加到上面的代码段中-
y1<-rpois(20,5) y2<-rpois(20,5) y3<-rpois(20,5) y4<-rpois(20,5) df2<-data.frame(y1,y2,y3,y4) df2$Largest_Col<-colnames(df2)[apply(df2,1,which.max)] df2输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
y1 y2 y3 y4 Largest_Col 1 4 5 4 8 y4 2 6 6 8 5 y3 3 4 7 5 4 y2 4 8 2 7 7 y1 5 3 6 5 0 y2 6 4 5 4 7 y4 7 6 1 2 9 y4 8 5 4 3 5 y1 9 9 5 6 5 y1 10 8 3 7 9 y4 11 5 14 7 5 y2 12 4 7 4 4 y2 13 9 3 1 2 y1 14 5 8 9 4 y3 15 2 7 2 5 y2 16 4 3 3 5 y4 17 4 6 4 4 y2 18 7 6 4 4 y1 19 12 6 8 4 y1 20 6 6 4 5 y1