r - 如何在数据框中按列名重命名观察结果?
问题描述
我有一个类似于以下内容的数据框:
Name L06 R12 L02
Joe Smith 1 0 0
Dave Thomas 0 1 1
Alex Smith 0 0 1
Eric Jones 1 0 0
我希望将值为 1 的观察值重命名为其列的名称。请注意,我只会重命名某些列(此处为第 2-4 列)。
Name L06 R12 L02
Joe Smith L06 0 0
Dave Thomas 0 R12 L02
Alex Smith 0 0 L02
Eric Jones L06 0 0
这可能吗?
解决方案
您可以尝试使用imap
from purrr
:
cols <- 2:4
df[cols] <- purrr::imap(df[cols], ~replace(.x, .x == 1, .y))
df
# Name L06 R12 L02
#1 JoeSmith L06 0 0
#2 DaveThomas 0 R12 L02
#3 AlexSmith 0 0 L02
#4 EricJones L06 0 0
在基础 R 中,您可以使用Map
:
df[cols] <- Map(function(x, y) replace(x, x == 1, y), df[cols], names(df[cols]))
推荐阅读
- android - Android资源编译失败-AAPT错误-资源重复值
- php - ReactJS axios POST 请求将所有选项作为具有空值的单个 JSON 键发送
- javascript - Js 谷歌地图标记和路径不出现
- ruby-on-rails - Rails 如何同时回滚和渲染?
- android - 为什么 Bundle 中的字符串在 Android 中被修改?
- r - 应用族函数不适用于 group_by() 但它适用于 select()
- python - 带变量的 PLT Latex
- android - 软键盘显示时约束布局方向改变
- javascript - Bootstrap对齐的下拉菜单
- modelica - 为什么 Modelica 中的“der()”运算符只适用于时间变量?