【发布时间】:2015-09-24 07:36:23
【问题描述】:
我的数据如下所示:
一组 10 个字符变量
Char<-c("A","B","C","D","E","F","G","H","I","J")
还有一个像这样的数据框
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)
我想做的是在数据框中添加第三列,其逻辑是 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)
对于这个简单的示例,我可以使用如下问题的简单替换: Create new column based on 4 values in another column
但我的实际数据集比这个简单的例子要大得多,变量多得多,所以不可能像上面的答案那样写出等价物。
所以我想要一些可以应用于更大数据帧的代码。也许是循环遍历 Col2 的所有值并将它们与 Char 的位置相匹配的东西。
1=Char[1] 2=Char[2] 3=Char[3]...... for the entire length of Col2
或任何其他可以扩展到长的可怕数据框的方式
【问题讨论】:
-
Char[Col2]在您的示例中给出了输出。这就是你所需要的吗? -
我喜欢这种简单。它适用于这个例子,但在我的数据集中 Col2 不是一个简单的数字序列。但是,如果我可以将我的实际数据转化为上面的一系列数字(也许使用唯一的?),那么这种方法将是完美的。
-
如果您的查找代码不同,您可以命名
Char向量,它将充当查找表。names(Char) <- codes。然后你可以使用Char[Col2],它会根据名称而不是索引进行子集化。