R:从其他表创建值矩阵

标签 r if-statement matrix dataframe transfer

我有以下数据框 table5,由 x 及其频率组成,使用 counts 从其他数据生成:

  x freq
1 1    3
2 3   21
3 4   21
4 5 1345
5 7    1

我想以一般方式(即与原始数据帧中的其他值一起使用)将其传输到以下数据帧table5if:

      Frequency
3             21
4             21
5             1345
other         4

即其中数字 3、4 和 5 的频率直接传输,所有其他数字在 other 中相加。我最近的尝试是这样的:

k <- seq(1, nrow(table5), by=1)
    ifelse(table5$x[k] == 3, table5if[1] <- table5$freq[k],
          ifelse(table5$x[k] == 4, table5if[2] <- table5$freq[k],
                ifelse(table5$x[k] == 5, table5if[3] <- table5$freq[k], table5if[4] <- (table5if[4] + table5$freq[k])
                  )
            )
      )

此尝试以及使用 if(...){...} else {...} 等的其他尝试都产生了某种形式的警告或错误(例如“number要替换的项目...”和“维度数...”,并且没有产生任何令人信服的结果。我已经查看了无数其他问题的错误/警告,但无法完全找到我正在寻找的内容for - 有很多关于矢量化的内容,但我不太明白为什么这会成为问题。任何人都可以为这个小任务建议一个合适的选择吗?

最佳答案

我将按factor(x,levels = 3:5)进行聚合,而所有不存在的级别将变为NA。如果您愿意,您可以随后将其更改为“other”data.table 在这种情况下很方便,因为它将 NA 保留为一个单独的组,而不是忽略它们

library(data.table)
setDT(df)[, .(Frequency = sum(freq)), by = factor(x, levels = 3:5)]
#    factor Frequency
# 1:     NA         4
# 2:      3        21
# 3:      4        21
# 4:      5      1345

关于R:从其他表创建值矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36463665/

相关文章:

java - 缩放和旋转点数组

matlab - 从 MATLAB 中的文本文件加载值

C#,If 语句中的否定条件是否更快?

programming-languages - increment++ 是如何工作的以及如何调整它以排除无效性?

存储函数中的MySQL if语句序列

actionscript-3 - ActionScript 3 中的锥形效果

r - 如何在数据集中对函数进行子集化和应用

r - 在R中:how to extract part of list of list

r - 在 data.frame 中的两列之间添加(插入)一列

html - 如何减少Shiny中sideBarPanel的边框宽度?