試す
raw$slot <- with(raw, paste0("slot",as.numeric(factor(id))))
raw
# id Cap Rs R_inv slot
#257 464A485SSEE3 1.41e-10 736665.1 1.36e-06 slot1
#258 464A485SSEE3 1.30e-10 364822.7 2.74e-06 slot1
#289 464A485TSEB2 1.44e-10 111996.1 8.93e-06 slot2
#290 464A485TSEB2 1.33e-10 108541.0 9.21e-06 slot2
または、データセットの順序が の場合、次のid
こともできます
raw$slot <- paste0("slot",cumsum(c(TRUE,raw$id[-1]!=raw$id[-nrow(raw)])))
アップデート
カスタム ラベルが必要な場合は、id
をfactor
(そうでない場合) に変換し、必要な を指定labels
できます。
raw$slot <- with(raw, as.character(factor(id, labels=c('split6', 'split9'))) )
raw$slot
#[1] "split6" "split6" "split9" "split9"
または、 をnumeric
に変換してインデックスfactor
をnumeric
利用し、そのインデックスのベクトルを使用names
します。ここで、これを行う前にレベルの順序を知る必要があります。
with(raw, c('split6', 'split9')[as.numeric(factor(id))])
#[1] "split6" "split6" "split9" "split9"
データ
raw <- structure(list(id = c("464A485SSEE3", "464A485SSEE3", "464A485TSEB2",
"464A485TSEB2"), Cap = c(1.41e-10, 1.3e-10, 1.44e-10, 1.33e-10
), Rs = c(736665.125, 364822.6875, 111996.1016, 108541), R_inv = c(1.36e-06,
2.74e-06, 8.93e-06, 9.21e-06)), .Names = c("id", "Cap", "Rs",
"R_inv"), class = "data.frame", row.names = c("257", "258", "289", "290"))