我已经将文件中的数据导入到R中的数据框中.就像这样.
Name Count Category
A 100 Cat1
C 10 Cat2
D 40 Cat1
E 30 Cat3
H 3 Cat3
Z 20 Cat2
M 50 Cat10
Run Code Online (Sandbox Code Playgroud)
所以现在我想添加Category列,具体取决于Name列中的值.如果Name =(A,D),Category ='Cat1'等等.
这只是我给出的一个简单例子.我有大量的名称和类别,所以我想要一个紧凑的语法.我怎样才能做到这一点?
编辑:我已经更改了示例以更好地满足我的需求,因为名称可以是任何数字.很抱歉以前不太清楚.
您可以使用地图。(已更新以使用stringsAsFactors = FALSE)
df <- data.frame( Name = c('A', 'C', 'D', 'E', 'H', 'Z', 'M'),
Count = c(100,10,40,30,3,20,50), stringsAsFactors = FALSE)
Categories <- list(Cat1 = c('A','D'),
Cat2 = c('C','Z'),
Cat3 = c('E','H'),
Cat10 = 'M')
nams <- names( Categories )
nums <- sapply(Categories, length)
CatMap <- unlist( Map( rep, nams, nums ) )
names(CatMap) <- unlist( Categories )
df <- transform( df, Category = CatMap[ Name ])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6704 次 |
| 最近记录: |