1

次の形式のデータフレームがあります。

      country company hitid
 1 Switzerland     CH1  <NA>
 2 Switzerland     CH2  <NA>
 3 Switzerland     CH3  <NA>
 4      Sweden     SU1  <NA>
 5      Sweden     SU2  <NA>
 6      Sweden     SU3  <NA>

hitid列に、以前に実行したループの結果を自動的に入力したいと思います。結果はd$COUNTRY $ hitidの形式で表示されます。ここで、国ごとに、入力したい別のhitidがあります。

編集:私のループ出力は次の形式です:

$Switzerland
    HITTypeId        HITId          Valid
1   1010               123           TRUE

$Sweden
   HITTypeId      HITId        Valid
1 1010            456           TRUE

名前文字列内で数式を使用する方法はありますか?私は次のようなものを構築できます:

hitid=d$"formula to look up country"$hitid

または、この問題をよりエレガントに構築する方法についてのアイデアはありますか?

基本的には、各国のHITIdをループから外して、既存のdatfileに抽出したいだけです。

4

2 に答える 2

0

これにより、データについていくつかの仮定が行われます。つまり、それDF$countryは文字列であり、それdはリストです。

DF <- read.table(text="      country company hitid
 1 Switzerland     CH1  <NA>
 2 Switzerland     CH2  <NA>
 3 Switzerland     CH3  <NA>
 4      Sweden     SU1  <NA>
 5      Sweden     SU2  <NA>
 6      Sweden     SU3  <NA>",header=TRUE,stringsAsFactors=FALSE)

d <- list(Switzerland=list(hitid=123),Sweden=list(hitid=456))

fun <- function(x) d[[x]][["hitid"]]
DF$hitid <- sapply(DF$country,fun)

#       country company hitid
# 1 Switzerland     CH1   123
# 2 Switzerland     CH2   123
# 3 Switzerland     CH3   123
# 4      Sweden     SU1   456
# 5      Sweden     SU2   456
# 6      Sweden     SU3   456
于 2013-03-26T15:38:30.133 に答える
0

ここにplyr解決策があります。

library(plyr)
ddply(dat,.(country),transform,
                hitid=  d[[unique(country)]]$hitid)

私が仮定するところ:

d <- list(Switzerland=list(hitid=1),
          Sweden=list(hitid=2))
于 2013-03-26T15:42:50.807 に答える