【问题标题】:Convert continuous dataframe into binary dataframe in R在R中将连续数据帧转换为二进制数据帧
【发布时间】:2015-07-20 20:19:14
【问题描述】:

我有以下数据框:

i39<-c(5,3,5,4,4,3)
i38<-c(5,3,5,3,4,1)
i37<-c(5,3,5,3,4,3)
i36<-c(5,4,5,5,4,2)
ndat1<-as.data.frame(cbind(i39,i38,i37,i36))
> ndat1
  i39 i38 i37 i36
1   5   5   5   5
2   3   3   3   4
3   5   5   5   5
4   4   3   3   5
5   4   4   4   4
6   3   1   3   2

我的目标是将任何 4 或 5 的值转换为 1,将其他任何值转换为 0 以产生以下结果:

> ndat1
  i39 i38 i37 i36
1   1   1   1   1
2   0   0   0   1
3   1   1   1   1
4   1   0   0   1
5   1   1   1   1
6   0   0   0   0

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    有了你的数据集我就可以了

    ndat1[] <- +(ndat1 >= 4)
    #   i39 i38 i37 i36
    # 1   1   1   1   1
    # 2   0   0   0   1
    # 3   1   1   1   1
    # 4   1   0   0   1
    # 5   1   1   1   1
    # 6   0   0   0   0
    

    虽然更通用的解决方案是

    ndat1[] <- +(ndat1 == 4 | ndat1 == 5)
    #   i39 i38 i37 i36
    # 1   1   1   1   1
    # 2   0   0   0   1
    # 3   1   1   1   1
    # 4   1   0   0   1
    # 5   1   1   1   1
    # 6   0   0   0   0
    

    一些data.table替代

    library(data.table)
    setDT(ndat1)[, names(ndat1) := lapply(.SD, function(x) +(x %in% 4:5))]
    

    我会和dplyr 一起玩mutate_each 的人

    【讨论】:

    • 此方法将无法正常工作,因为可能存在数据集包含大于 4 但小于 5 的案例的情况,我只需要正好 4 或正好 5 的案例。
    • 绝对是一个更快的解决方案,谢谢!我会尽快投票。但是,我会说这看起来像是在产生一个矩阵,我更喜欢一个数据框。
    • 我知道这一点,我当天的赞成票用完了。如果您认为有必要,请对我的问题和答案进行投票。另外,感谢您的额外编辑和其他选项。
    【解决方案2】:

    我使用以下方法解决了这个问题:

    recode<-function(ndat1){
    ifelse((as.data.frame(ndat1)==4|as.data.frame(ndat1)==5),1,0)
    }
    sum_dc1<-as.data.frame(sapply(as.data.frame(ndat1),recode),drop=FALSE)
    > sum_dc1
      i39 i38 i37 i36
    1   1   1   1   1
    2   0   0   0   1
    3   1   1   1   1
    4   1   0   0   1
    5   1   1   1   1
    6   0   0   0   0
    

    我只是想知道其他人是否有任何想法,但总的来说我对这种解决问题的方式感到满意。谢谢。

    【讨论】:

      猜你喜欢
      • 2021-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 2023-01-07
      相关资源
      最近更新 更多