r - R中的数据转换:将一个级别一分为二
问题描述
我有一个 df,其中包含 2003 年输入的国家级数据。
几行数据属于一个名为“南斯拉夫联邦共和国”的国家。
今天这是两个不同的国家,我想复制这些数据行,以便我可以将每组行重命名为其各自的现代国家名称。
data.frame(Country = "Yugoslavia", Chickens = 567)
使用这个最小的例子,我如何创建这个数据框?
data.frame(Country = c("Serbia", "Montenegro"), Chickens = 567)
解决方案
您可以在一个tidyverse
管道中执行以下操作:
library(tidyverse)
df2 <- df %>%
mutate(Country = if_else(Country == "Yugoslavia", "Serbia", as.character(Country))) %>%
bind_rows(df) %>%
mutate(Country = if_else(Country == "Yugoslavia", "Montenegro", as.character(Country)))
您也可以使用mutate_if
而不是if_else
语句。
Country Chickens
1 Serbia 567
2 Montenegro 567
默认情况下data.frame
,将字符列转换为因子。上面的替换强制转换为字符。
如果要保留因子类,则只需添加:
%>% mutate(Country = as.factor(Country))
... 在最后。
推荐阅读
- python - 如何在对象特征中的数字之间替换文本
- unity3d - unity VR oculus 中的玩家移动
- three.js - 如何在加载而不是运行时执行所有慢速 THREE.Texture 计算?
- vba - 在邮件项目上使用 GetConversation 时出现错误 438
- javascript - 如何将A、B、C的默认注释更改为google api图表注释图表中addColumn的标题?
- javascript - 是否可以更改用 new 调用的函数的返回类型
- java - 导入日期模式数据并忽略java中的其他字符串
- javascript - 无法将数据发送到 API 服务器“尝试区分 '[object Object] 时出错”。只允许使用数组和可迭代对象'
- oracle - sqlplus 在未处理的异常上退出
- python - 在带有 ipywidgets 的 jupyter notebook 上使用 nbconvert 时,输出小部件出现在选项卡小部件之外