2014-07-23 113 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