2017-07-18 10 views
0

私はこのサイトを初めて利用しています。既存のデータフレームから一定の品質を持つデータフレームに新しい変数/列を作成します。

私は大量のデータファイルから作業しています。だから、hereのような小さな例を挙げます。

"プレート"列には3つの値、1,2、および3があります。3つの新しい列を作成しようとしていますが、各列に特定の行の "Abs.530nm"

Error in subset(plate, name.start <- "1", drop = FALSE) : 
object 'plate' not found 
:私はこのエラーを得た

data.row$plate %<>% factor(levels = c("1","2","3")) 

data.row %>% 
group_by(box, plate) %>% 
diff.tr.1.2 <- subset(plate, name.start <-"1", drop=FALSE) %>% 


{.} ->data.tech 

:それは

これは私がしようとするものである対応するプレートの番号(exは、新しい列になどを、プレート1から吸光度の値を区切り)が含まれてい

私がやろうとしていることをする方法はありますか?

+1

と呼ばれると仮定すると、「ABS.530nmプレート1」の欄に

をNA値を導入するよりもはるかにクリーンなソリューションです。あなたは 'data.row%>%group_by(box、plate = factor(plate、levels = 1:3))%>%filter(name.start == 1)'が必要だと思います。あなたは 'name.start == 1'を意味しましたか? – akrun

答えて

0

data.table大容量データセットのパッケージは非常に高速で、あなたの説明どおりにサブセット化するのは非常に簡単です。

3つの別々のAbs.530nmカラムを作成するのではなく、データフレームを3つの異なる方法で、各因子レベルごとに1つだけフィルタリングすることをお勧めします。それはあなたが `` dplyr`とともに、ベースR`構文を使用しているあなたのデータフレームがdf

require(data.table) 
as.data.table(df) 

# plate == 1 is your "filter" selecting only rows where the plate is 1 
# by defines your grouping, in this case, by box, then by plate 

output <- df[plate ==1, by= .(box,plate)] 
関連する問題