用子集中的数据替换较大数据帧中的数据

时间:2014-01-23 22:52:24

标签: r dataframe subset

这可能是基本的,但我已经搜索了25分钟,但却找不到适用于我的解决方案。

我为SITE配置了数据帧(dataSC)。 我得到dataSC_s,看起来像这样(但更长):

   SURVEY_DATE  SITE   TIME_BLOCK  ACTIVE_FISHING
    1/13/2013    1a-5      9           2
    1/13/2013    1a-5     10           3
    1/13/2013    1a-5     11           3
    1/13/2013    1a-5     12           4
    1/13/2013    1a-5     13           3
    1/13/2013    1a-5     14           4
    1/13/2013    1a-5     15           4
    1/13/2013    1a-5     16           3      
    1/14/2013    1a-5      9           2
    1/14/2013    1a-5     10           3
    1/14/2013    1a-5     11           3
    1/14/2013    1a-5     12           4
    1/14/2013    1a-5     13           3
    1/14/2013    1a-5     14           4
    1/14/2013    1a-5     15           4
    1/14/2013    1a-5     16           3  
    1/15/2013    1a-5      9           2
    1/15/2013    1a-5     10           3
    1/15/2013    1a-5     11           3
    1/15/2013    1a-5     12           4
    1/15/2013    1a-5     13           3
    1/15/2013    1a-5     14           4
    1/15/2013    1a-5     15           4
    1/15/2013    1a-5     16           3  

然后我为SURVEY_DATE子集(并创建dataSC_sd),因此可以进行更改ACTIVE_FISHING的计算。 我想将dataSC_s中的ACTIVE_FISHING替换为dataSC_sd中的新值。 我试过了:

min.row <- min(as.numeric(row.names(dataSC_sd)))
max.row <- max(as.numeric(row.names(dataSC_sd)))
dataSC_s[min.row:max.row,"ACTIVE_FISHING"] <- dataSC_sd$ACTIVE_FISHING

但这不起作用,因为dataSC_s中的索引号不是顺序的,因为dataSC_s是dataSC的子集。

有谁知道我怎么做到这一点? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

dataSC_s[row.names(dataSC_sd),"ACTIVE_FISHING"] <- dataSC_sd$ACTIVE_FISHING

所以你要索引与dataSC_sd的rownames匹配的行,因为这是dataSC_s的一个子集,所以它应该可以工作。请注意row.names(dataSC_sd)是一个字符向量,因此您按照与名称"ACTIVE_FISHING"建立索引相同的方式按“名称”建立索引,这适用于索引具有名称的任何维度。