r - R:如何替换数据框中的一组值
问题描述
我想我需要一些帮助来完成这段代码。
我有一个如下所示的数据集:
df1
> subj_ids activity_names
1 2 5
2 2 5
3 2 3
4 2 3
5 2 4
6 2 4
7 2 1
8 2 1
9 2 6
10 2 6
我想用以下值替换活动名称的值:
df2
V1 V2
1 1 WALKING
2 2 WALKING_UPSTAIRS
3 3 WALKING_DOWNSTAIRS
4 4 SITTING
5 5 STANDING
6 6 LAYING
我想这样做,如果 df1$activity_names 与 df2$V1 匹配,则 df1$activity_names 上的值应更改为 df2$V2 上的相应值。因此生成的数据框应如下所示:
> subj_ids activity_names
1 2 STANDING
2 2 STANDING
3 2 WALKING_DOWNSTAIRS
4 2 WALKING_DOWNSTAIRS
5 2 SITTING
6 2 SITTING
7 2 WALKING
8 2 WALKING
9 2 LAYING
10 2 LAYING
我已经设置了以下代码来做到这一点:
#index
my_i <- df2$V1
my_j <- df2$V2
#use my_merged_data1_sub as a test
df1$activity_names <- replace(df1$activity_names,
df1$activity_names == 5, "STANDING")
当我只做一次时它会起作用,但是当我尝试概括它时
df1$activity_names <- replace(df1$activity_names,
df1$activity_names %in% my_i, my_j)
它不正确。顺序和匹配出现错误。
谁能帮我弄清楚出了什么问题?谢谢,
解决方案
推荐阅读
- c# - 延迟在基于 Kestrel 的 Web 服务器中发送 HttpResponse
- qt - 更新 PyQt5 中嵌入的 matplotlib 图导致重叠
- react-native - 如何在ios手机上同时显示多个警报
- node.js - internal/modules/cjs/loader.js:892 - Node.js npm 版本检查出错
- algorithm - 制作“老虎机”算法
- java - JavaFX 3D透视相机运动
- android - 后台任务中配置更改时再次重新加载 Json 数据
- computation-theory - DFA 语言和状态图
- firebase - Phoneauthprovider 不是一个函数 firebase react-native
- javascript - 如何在node.js中本地更新发布时间