R 在替换数据框中的列时省略值

标签 r dataframe

我目前在 R 中遇到编码问题。这是我在这里的第一篇文章,所以我希望我做的是正确的。

我正在用以下代码替换 R 中数据框中的列。 North、South 和 West 都可以替换,但 R 不允许我替换 East。它保持这些点的数字。发生了什么,我该如何调整我的代码来修复它? oj$region 是一个数值向量,范围从 2 到 137。

oj$region <- replace(oj$region, oj$region >= 2 & oj$region <= 53, "West")
oj$region <- replace(oj$region, oj$region >= 54 & oj$region <= 86, "North")
oj$region <- replace(oj$region, oj$region >= 88 & oj$region <= 111, "East")
oj$region <- replace(oj$region, oj$region >= 112 & oj$region <= 137, "South")

如您所见,我的代码在所有行之间都是相同的。我是 R 的新手,所以如果我遗漏了一个怪癖。

最佳答案

是因为在第一行之后,由于 coercionregion变成了一个字符列。然后像 > 这样的比较与你预期的略有不同。这是一个示例:

"88" > "111"
#[1] TRUE

对比

88 > 111
#[1] FALSE

这里有一些替代方法。 请注意,获得的值可能略有不同。

#DATA
set.seed(42)
oj = data.frame(region = sample(2:137), stringsAsFactors = FALSE)

1

oj$region2 <- replace(oj$region, oj$region >= 2 & oj$region <= 53, "West")
oj$region2 <- replace(oj$region2, oj$region >= 54 & oj$region <= 86, "North")
oj$region2 <- replace(oj$region2, oj$region >= 88 & oj$region <= 111, "East")
oj$region2 <- replace(oj$region2, oj$region >= 112 & oj$region <= 137, "South")

2

LMunyan's Approach

3

oj$region4 = as.character(factor(cut(x = oj$region,
                                     breaks = c(0, 53, 86, 111, 137)),
                                 labels = c("West", "North", "East", "South")))

关于R 在替换数据框中的列时省略值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48408391/

相关文章:

r - 如何使用PRROC包获取R中随机森林的ROC和PR的auc

python - 对 Dataframe 中具有匹配列标题的列进行求和

python - 通过 multiindex 将 Series 分配给 DataFrame

python - 在 Pandas 中有条件地将整行设置为 NaN/None

python - 如何将 DataFrame 转换为仅获取映射值的字典?

R - 如何使用 ggvis 绘制多密度图

r - R 中的高级行删除

r - 过滤季节性时间序列异常值

r - 在列组上应用函数

python-3.x - 计算数据框中的状态