【问题标题】:Dataset manipulation, substitution [closed]数据集操作,替换
【发布时间】:2013-05-06 22:59:50
【问题描述】:

我有以下数据集:

    V1  V2  V3  V4  V5 V6  V7  V8 V9 V10
   1:  NA  NA  NA  NA  NA NA  NA  NA NA  NA
   2:  NA  NA  NA  NA  NA NA  NA  NA NA  NA
   3:  NA  NA  NA  NA  NA NA  NA  NA NA  NA
   4:  NA  NA  NA  NA  NA NA  NA  NA NA  NA
   5:  NA  NA  NA  NA  NA NA  NA  NA NA  NA
  ---                                      
3180:  NA  NA  NA  NA  NA NA  NA  NA NA  NA
3181:  NA  NA 185  NA  NA NA  NA  NA NA  NA
3182: 151 162 162 157 150 NA 162 162 NA  NA
3183:  NA  NA  NA  NA  NA NA  NA  NA NA  NA
3184: 153  NA  NA  NA  NA NA  NA  NA NA  NA

我正在尝试将所有 174 替换为 1,然后将其他所有内容都设置为 0。 这是我的代码:

sibling=data.table(cbind((data[,'b16aa']),(data[,'b16ba']),(data[,'b16ca']),(data[,'b16da']),(data[,'b16ea']),    (data[,'b16fa']),(data[,'b16ga']),(data[,'b16ha']),(data[,'b16ia']),(data[,'b16ja'])))
sibling[sibling == 174] <-1

但是输出是:

 > sib1
[1] 1

这显然是错误的,我不确定如何将其他所有值设置为 0。

【问题讨论】:

  • 没有提供了可重现的示例。 data 是什么?您的“数据集”没有名为“b16aa”或类似名称的列。如果您使用data.table 并且datadata.table,那么您不应该像现在这样创建兄弟姐妹。您的方法缺少很多东西,并且可能存在问题。

标签: r data.table


【解决方案1】:

如果DF 是您的数据框,那么试试这个:

DF[] <- as.numeric(DF == 174 & !is.na(DF))

或者这个可以分配给你想要的名字的非破坏性版本:

replace(DF, TRUE, as.numeric(DF == 174 & !is.na(DF)))

【讨论】:

  • 我希望数据表中等于 174 的所有内容都为 1,其他所有内容都变为 0,即使是 NA。
  • 现在也为NA 值添加了条件。
猜你喜欢
  • 1970-01-01
  • 2017-02-11
  • 2016-06-08
  • 2021-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多