r - 选择数据框中的一些项目并更改它们

标签 r dataframe

我有一个包含一些信息的数据框。有些数据不适用。像这样的东西:

    id fact sex
1   1    3    M
2   2    6    F
3   3    NA  <NA>
4   4    8    F
5   5    2    F
6   6    2    M
7   7    NA  <NA>
8   8    1    F
9   9   10    M
10 10   10    M

我必须通过一些规则改变事实(例如乘以 3 个具有 (data == "M") 的元素)。

我试过survey$fact[survey$sex== "M"] <- survey$fact[survey$sex== "M"] * 3 ,但由于不适用,我有一些错误。

我知道我可以用 is.na(x) 检查元素是否为 NA,并在 [...] 中添加此条件,但我希望存在更漂亮的解决方案

最佳答案

我真的很喜欢ifelse ,它似乎总是具有关于 NA 的期望行为对我来说值(value)观。

survey$fact <- ifelse(survey$sex == "M", survey$fact * 3, survey$fact)

?ifelse显示第一个参数是测试,第二个参数是分配的值(如果测试是 true)最后一个参数的值 if false 。如果分配原来的data.frame列为 false返回值,它将分配测试失败的行而不修改它们。

这是您所要求内容的扩展,以表明您还可以测试 NA值。

survey$fact <- ifelse(is.na(survey$sex), survey$fact * 2, survey$fact)

我也喜欢它的可读性。

关于r - 选择数据框中的一些项目并更改它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19609345/

相关文章:

r - 从 purrr::map 获取命名列表,就像在 plyr::ldply 中一样

r - 从 Github 导入数据到 R (rdata)

r - 使用 tidyverse 提取估计系数和标准误差

python - 根据条件计算组内共享元素的数量

python - pandas 中的新列 - 通过应用列表 groupby 将系列添加到数据框

r - 在 R 中的序列中查找 A-U、C-G 和 G-U 对比例

R:反向引用 `with` 表达式中的数据帧

python - Pandas : add a sublevel to an index that depend from the upper one

python - 如何计算 Pandas 中每个唯一值的出现次数

python - Pandas:两个数据帧的元素乘法