首页 > 解决方案 > 用相等的索引替换数字元素

问题描述

我有一个大数据框dim(13265x40)。数据框是通过在列表中组合几个单独的数据框创建的 big_dataframe = bind_rows(dataframe_list, .id = "Index").id = "Index"给了我一个额外的列"Index",用数字输入(1、2、3、4 等)调用,所以我仍然可以识别big_dataframe.

例子:

big_dataframe:
Index  A  B  C  D
1      3  6  7  1
1      6  6  2  0
1      7  5  4  2
2      4  0  7  4
2      3  2  9  1
2      9  4  4  5
3      7  1  5  2
3      3  9  3  4
3      1  1  2  10
4      10 6  7  1

等等。然后我有一个 indexlist:indexlist = c("John", "Peter", "Michael", "Brian", etc.)包含"character"元素。

目标是用相等索引big_dataframe$Index的元素替换数字输入。indexlist例子:

big_dataframe:
Index  A  B  C  D
John   3  6  7  1
John   6  6  2  0
John   7  5  4  2
Peter  4  0  7  4
Peter  3  2  9  1
Peter  9  4  4  5
Peter  7  1  5  2
Peter  3  9  3  4
Peter  1  1  2  10
Brian  10 6  7  1

我对此有点迷茫,不知道如何解决这个问题。

先感谢您

标签: rindexing

解决方案


如果'index'是数字并且从1开始,它可以用作以相同顺序将值替换为'indexlist'值的索引

big_dataframe$Index <- indexlist[big_dataframe$Index]

数据

big_dataframe <- structure(list(Index = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 
4L), A = c(3L, 6L, 7L, 4L, 3L, 9L, 7L, 3L, 1L, 10L), B = c(6L, 
6L, 5L, 0L, 2L, 4L, 1L, 9L, 1L, 6L), C = c(7L, 2L, 4L, 7L, 9L, 
4L, 5L, 3L, 2L, 7L), D = c(1L, 0L, 2L, 4L, 1L, 5L, 2L, 4L, 10L, 
1L)), class = "data.frame", row.names = c(NA, -10L))

indexlist <- c("John", "Peter", "Michael", "Brian")

推荐阅读