首页 > 解决方案 > 根据 c=字符数替换列中的值

问题描述

我有一个包含一列的数据框:

V1
123
14321
1
65433
56

我想用 2 和 1 替换该列中的每个值,具体取决于值中字符的离子数:如果有 < 3 个字符,则为 1,如果 >= 3 则为 2。所以所需的结果是:

V1
2
2
1
2
1

我怎么能这样做?我试过这个,但没有奏效:

df$V1 <- with(df, ifelse(nchar(V1) < 3, 0, 1))

标签: rdataframe

解决方案


我们可以强制转换为整数

df$V1 <- +(nchar(df$V1) >=3)
df$V1
#[1] 1 1 0 1 0

如果该列是factornchar则将不起作用。它需要转换为character

df$V1 <- +(nchar(as.character(df$V1)) >=3)

数据

df <- structure(list(V1 = c(123L, 14321L, 1L, 65433L, 56L)),
   class = "data.frame", row.names = c(NA, 
-5L))

推荐阅读