首页 > 解决方案 > 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)

它不正确。顺序和匹配出现错误。

谁能帮我弄清楚出了什么问题?谢谢,

标签: rdataframeloopsreplace

解决方案


推荐阅读