次の表は、1番目、2番目、名前でグループ化されています。
myData <- structure(list(first = c(120L, 120L, 126L, 126L, 126L, 132L, 132L), second = c(1.33, 1.33, 0.36, 0.37, 0.34, 0.46, 0.53),
Name = structure(c(5L, 5L, 3L, 3L, 4L, 1L, 2L), .Label = c("Benzene",
"Ethene._trichloro-", "Heptene", "Methylamine", "Pentanone"
), class = "factor"), Area = c(699468L, 153744L, 32913L,
4948619L, 83528L, 536339L, 105598L), Sample = structure(c(3L,
2L, 3L, 3L, 3L, 1L, 1L), .Label = c("PO1:1", "PO2:1", "PO4:1"
), class = "factor")), .Names = c("first", "second", "Name",
"Area", "Sample"), class = "data.frame", row.names = c(NA, -7L))
各グループ内で、特定のサンプルに対応する領域を抽出したいと思います。いくつかのグループにはサンプルからの領域がないため、サンプルが検出されない場合は「NA」を返す必要があります。理想的には、最終出力は各サンプルの列である必要があります。
ifelse関数を試して、各サンプルに1つの列を作成しました。
PO1<-ifelse(myData$Sample=="PO1:1",myData$Area, "NA")
ただし、これはグループの分布を考慮していません。私はこれをやりたいのですが、グループ内です。各グループ内(sample = PO1:1の場合は1列目、2列目、およびName列の値が等しいグループ)、それ以外の場合はNA。
最初のグループの場合:
structure(list(first = c(120L, 120L), second = c(1.33, 1.33),
Name = structure(c(1L, 1L), .Label = "Pentanone", class = "factor"),
Area = c(699468L, 153744L), Sample = structure(c(2L, 1L), .Label = c("PO2:1",
"PO4:1"), class = "factor")), .Names = c("first", "second", "Name",
"Area", "Sample"), class = "data.frame", row.names = c(NA, -2L))
出力は次のようになります。
structure(list(PO1.1 = NA, PO2.1 = 153744L, PO3.1 = NA, PO4.1 = 699468L), .Names =c("PO1.1", "PO2.1", "PO3.1", "PO4.1"), class = "data.frame", row.names = c(NA, -1L))
なにか提案を?