【发布时间】:2016-04-06 22:48:48
【问题描述】:
我有以下数据框,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 {...} etc. 的其他尝试都产生了某种形式的警告或错误(例如“要替换的项目数...”和“维数...”并且没有产生任何令人信服的结果。我已经查看了无数其他关于错误/警告的问题,但无法完全找到我正在寻找的内容 - 关于矢量化的内容很多,但我无法完全理解为什么会出现这样的问题. 谁能为这个小任务推荐一个合适的选项?
【问题讨论】:
-
为什么不把所有的频率相加,然后减去数字 3、4 和 5 的频率来计算其他频率的总数?
-
这肯定是最简单的选择!我也很喜欢避免现成的函数并将其归结为数学和逻辑。非常感谢您的建议,windrunn3r.1990!
标签: r if-statement matrix dataframe transfer