首页 > 解决方案 > 在数据框中创建类型列

问题描述

我有一个数据框:

x     y
A1  ''
A2  '123,0'
A3  '4557777'
A4  '8756784321675'
A5  ''
A6  ''
A7  
A8
A9  '1533,10'
A10
A11 '51'

我想向它添加列“类型”,它有三种类型:1、2、3。1 表示 y 中的值是不带逗号的数字,2 表示带逗号的数字,3 表示空值 ''(两个撇号)。所以想要的输出是:

x     y               type
A1  ''                3
A2  '123,0'           2
A3  '4557777'         1
A4  '8756784321675'   1
A5  ''                3
A6  ''                3
A7  
A8
A9  '1533,10'         2
A10
A11 '51'              1

我该怎么做?对我来说最不清楚的部分是在 y 列中为每种类型添加标题

标签: rdataframe

解决方案


这是通过ifelse和正则表达式的解决方案:

数据:

df <- data.frame(
  y = c("", "", "1,234", "5678", "001,2", "", "455"), stringsAsFactors = F)

解决方案:

df$type <- ifelse(grepl(",", df$y), 2,
                  ifelse(grepl("[^,]", df$y), 1, 3))

结果:

df
      y type
1          3
2          3
3 1,234    2
4  5678    1
5 001,2    2
6          3
7   455    1

更新

df <- data.frame(
  y = c("''", "", "1,234", "5678", "001,2", "", "''", 455), stringsAsFactors = F)

df$type <- ifelse(grepl(",", df$y), 2,
                  ifelse(grepl("[^,']", df$y), 1,
                         ifelse(df$y=="", "", 3)))

df
      y type
1    ''    3
2           
3 1,234    2
4  5678    1
5 001,2    2
6           
7    ''    3
8   455    1

这是你的想法吗?


推荐阅读