2016-09-28 17 views
0

Rに取り込んだ2つの異なるグループのテスト結果のリストがあります。 R.と私の現在のデータフレームは、次のようになります。R:1つの列からコンマ区切りの値を新しいデータフレームに分割する(またはstrsplitの結果を使用する方法)

Samples <- c("A","B","C","D","E") 
Test1 <- c("1","","300","NA","100, 2") 
Test2 <- c("2","5000","3, 4000, 5","3","") 
df <- data.frame(Samples, Test1, Test2) 

そして、私は(1)(2)そのテストの単位を修正し、別の列に複数の、カンマ区切りの値を用いて細胞をブレイクしたいのですが彼らは一致します - これのTest1は時々Test2報告が1000の要因によってオフである間100の要因によってオフのスケールで報告されます、そして(3)結果の値を1つの列に戻して平均してください。

私はこのように始まった:

#Replace blank cells with NA 
df[df==""] <- "NA" 
#Split cells with commas in them 
split2 <- strsplit(df$Test2, split = "\\,") 

、速やかに捕まってしまいました。作成したリストを何らかのデータフレームに戻すにはどうすればよいですか?私は巨大なデータセットの列にカンマで区切られた文字列がいくつあるかわかりません。ほとんどの行は1つの結果しか持っていませんが、2つの場合はいくつか、残りの8つの場合は少なくとも1つあります。新しいデータフレームを構築しようとする私の2つの試み(以下)はうまくいかなかった。

do.call(rbind, lapply(split2)) 
Error in match.fun(FUN) : argument "FUN" is missing, with no default 
data.frame(t(sapply(split2,c))) 
    X1 X2   X3 X4 X5 
1 2 5000 3, 4000, 5 3 

私はまだリストとほぼ確実にループの関数/でこれを行うにはいくつかの方法を使用しながら行うことを探しています何をすべきか、いくつかの方法があります確信しています。どんな提案も大歓迎です。

結局、私は、データは次のようになりたいのですが:

Samples Test1 Test2 
1  A  1  2 
2  B NA  5 
3  C  3  4 
4  D NA  3 
5  E 1.5 NA 
+0

入力からどのように期待される出力を得られますか? Test2の4はどこから来たのですか? Test1の3と1.5はどこから来たのですか? – aichao

+2

@aichao vmuirは、共通の単位ベースへの条件付き変換、つまり2列目と1000列目の除算を想定していますが、指定されていない条件を満たす項目のみを対象としています。私は、これらの列が 'strsplit'がエラーを投げるファクタークラスであるという事実など、彼が気づかない多くの問題があると思います。データの入力エラーが発生した箇所に戻り、データ入力をやり直す方が良いと思います。 –

答えて

0

私はこのケースでは、次の操作を行いたい:私は、データを作成し、あなたのようsplit2を計算しません(私はstringsAsFactors=FALSEときに使用を除き、

# get the maximal length of the vectors in split2 
ncol_new <- max(sapply(split2, length)) 
# set the length of all of those elements to the maximal lenght 
# this also fills them with NA values 
split3 <- lapply(split2, `length<-`, ncol_new) 
# transform the list of vectors to a matrix 
new_cols <- matrix(unlist(split3), byrow=TRUE, ncol=ncol_new) 
# set new colnames 
colnames(new_cols) <- paste0("newCol", 1:ncol_new) 
# and add the matrix to the dataframe as new columns 
df <- cbind(df, new_cols) 
関連する問題