【问题标题】:Modify variable for some observations修改一些观察的变量
【发布时间】:2016-02-01 15:59:03
【问题描述】:

我正在尝试更改名为“layer”的变量的值,以获取对 R 的一些观察结果。我有一个向量,其中包含要修改的观察结果的 ID:

> str(cell_black_communities)
List of 1
 $ : num [1:54984] 1776 1777 1778 1779 1782 ...

还有一个带有 ID 变量的 data.frame 和一个我想要修改的名为“layer”的变量。我尝试了以下代码:

df$layer[df$ID %in% unlist(cell_black_communities)] <- -1 * (df$layer)

实际上是变量变化:

> summary(df$layer)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 -62570   -2392    5353   18250   37200  144900 

但出现警告:In df$layer[df$ID %in% : number of items to replace is not a multiple of replacement length。我想知道为什么会出现此警告以及如何解决它。

提前致谢

【问题讨论】:

  • 您当前正在尝试将数据集长度的向量分配给较小的向量,这会给您错误的值。你可以试试df$layer2 &lt;- ifelse(df$ID %in% unlist(cell_black_communities),-1,1) * df$layer

标签: r dataframe


【解决方案1】:

你试过了吗?

df$layer_mod <- ifelse(df$ID %in% unlist(cell_black_communities), <here comes modification formula>, df$layer)

因此,如果您的修改包括向层添加 1,那么这将是:

df$layer_mod <- ifelse(df$ID %in% unlist(cell_black_communities), df$layer + 1, df$layer)

...只是将图层设置为-1

df$layer_mod <- ifelse(df$ID %in% unlist(cell_black_communities), -1, df$layer)

...改变图层的符号:

df$layer_mod <- ifelse(df$ID %in% unlist(cell_black_communities), -1 * df$layer, df$layer)

显然这会在 df 中创建一个新列,但您可以通过将 df$layer 放在赋值左侧来轻松覆盖当前层列。

【讨论】:

    猜你喜欢
    • 2014-10-08
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多