2014-07-23 32 views
0

我有一个数据帧,看起来像这样:r功能返回列数

df<-data.frame(H0<-c(35.4, 36.0, 36.0, 36.4), H1<-c(34.2, 34.0, NA, NA), 
      H2<-c(33.4, 33.5, NA, 34.2), H3<-c(32.9, 33.0, 34.0, NA), 
      H4<-c(32.8, 33.0, 33.5, 33.2)) 

我需要找到每一行中第一行我做的最小值:

min(df[1,], na.rm=TRUE) 

在r中是否有函数返回列号(本例中为5)而不是实际值。

+0

是:'which.min(...)' – jlhoward

回答

1
df<-data.frame(H0=c(35.4, 36.0, 36.0, 36.4), H1=c(34.2, 34.0, NA, NA), 
       H2=c(33.4, 33.5, NA, 34.2), H3=c(32.9, 33.0, 34.0, NA), 
       H4=c(32.8, 33.0, 33.5, 33.2)) 
which.min(df[1,]) 
# H4 
# 5 

注意:当你创建自己的数据帧,例如H0<-c(...)而不是H0=c(...)您还在创建矢量H0等,并且列名将变得不可理解。

+0

+1提'<-' VS' ='差异。为什么它们不仅可以互换,而是更好的例子之一。 – thelatemail

+1

也许你应该指出'which.min'只会返回一个值,即使有多个数据点被限定为最小值。 – A5C1D2H2I1M1N2O1R2T1

1

如果你需要得到所有min值的列名在一排

apply(df,1, function(x) {x1 <-x[!is.na(x)]; which(x1== min(x1))}) 
# [[1]] 
# H4 
# 5 

# [[2]] 
# H3 H4 
# 4 5 

# [[3]] 
# H4 
# 3 

# [[4]] 
# H4 
# 3