我的数据看起来像这样:
一组10个字符变量
Char<-c("A","B","C","D","E","F","G","H","I","J")
Run Code Online (Sandbox Code Playgroud)
还有一个看起来像这样的数据框
Col1<-seq(1:25)
Col2<-c(1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5)
DF<-data.frame(Col1,Col2)
Run Code Online (Sandbox Code Playgroud)
我想要做的是在数据框中添加第三列,逻辑是1 = A,2 = B,3 = C等等.所以最终的结果是
Col3<-c("A","A","A","A","A","B","B","B","B","B","C","C","C","C","C","D","D","D","D","D","E","E","E","E","E")
DF<-data.frame(Col1,Col2,Col3)
Run Code Online (Sandbox Code Playgroud)
对于这个简单的例子,我可以像这个问题一样简单替换: 根据另一列中的4个值创建新列
但是我的实际数据集比这个简单的例子更大,变量更大,因此不可能像上面的答案那样写出等价物.
所以我希望有一些代码可以应用于更大的数据帧.也许是通过Col2的所有值循环并将它们与Char的位置相匹配的东西.
1=Char[1] 2=Char[2] 3=Char[3]...... for the entire length of Col2
Run Code Online (Sandbox Code Playgroud)
或者任何其他可以扩展到长期怪异数据帧的方式
# Values that Col2 might have taken
levels = c(1, 2, 3, 4, 5)
# Labels for the levels in same order as levels
labels = c('A', 'B', 'C', 'D', 'E')
DF$Col3 <- factor(DF$Col2, levels = levels, labels = labels)
Run Code Online (Sandbox Code Playgroud)