2016-10-13 3 views
0

のデータフレームの列には列ヘッダーを持つデータフレームが1つありますが、coulmnヘッダーの位置は固定されていませんので、最初の列で空でない値を読み取ってヘッダーのインデックスを取得できますファイル。最初の空でない値R

mydata.txtという

     test 34 45 
         rt  45 56 
         tet3  67 56 
     Col1 Col2 Col3 Col4 Col5 
     45 45  23  56 12 
     34 45  67  65 32 
     45 67  78  90 54 
     56 43  32  12 45 


    mydata = read.table("mydata.txt") 
    mydata[,1]  #how to find first non blank value in first column? 

約pblmを簡略化するために:

DF < -C( ""、 ""、 ""、34,23,45)

方法

例えば、DF

+0

SOへようこそ。あなたはあなたの質問を改善することができます。 [Rで最小限の再現可能な例を提供する方法](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#answer-5963610)をお読みください。それに応じて編集して改善してください。良いポストは通常​​、最小限の入力データを提供します。新しい/クリーンなRセッションでは、コピー&ペースト実行可能(screeenshotではありません)したい出力データとコードが必要です。 – lukeA

+0

投稿した内容から、.txtファイルに実際には2つのデータフレームが含まれているようですが、行の名前が「test」、「rt」、「tet3」で、列名が「Col1」から「Col5」 "これは本当ですか? – AkselA

+0

1つのファイルにデータが含まれていますが、私はcolumumn(ここでcol1)の最初の空白でない値のインデックスを見つける必要があります。 –

答えて

0

を与える:

df <- c("", "", "", 34, 23, 45) 

purrrパッケージはdetect()detect_index()でこのような機能を提供します。

install.packages("purrr", repos = "https://cloud.r-project.org") 
library(purrr) 
detect_index(df, function(x) x != "") 
0

オクラホマにfiest非ブランク値を見つけるために

writeLines(tf <- tempfile(fileext = ".txt"), text = " 
      test 34 45 
       rt  45 56 
       tet3  67 56 
Col1 Col2 Col3 Col4 Col5 
45 45  23  56 12 
34 45  67  65 32 
45 67  78  90 54 
56 43  32  12 45") 
mydata = read.table(tf, fill = TRUE, stringsAsFactors = FALSE) 
idx <- which.min(mydata[,4]=="") 
df <- mydata[-(1:idx), ] 
df <- as.data.frame(lapply(df, type.convert)) 
names(df) <- unlist(mydata[idx, ],F,F) 

あなたの "簡略化" の問題に答えるためにしようと

str(df) 
# 'data.frame': 4 obs. of 5 variables: 
# $ Col1: int 45 34 45 56 
# $ Col2: int 45 45 67 43 
# $ Col3: int 23 67 78 32 
# $ Col4: int 56 65 90 12 
# $ Col5: int 12 32 54 45 
+0

私はCol1のために4を意味する最初の非ブランク値のインデックスが必要です。 –

+0

カラム1、カラム2、カラム3の最初の3つの値が空白 –

+0

インデックスが 'idx' – lukeA

関連する問題