首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除R中数据帧中列表中的数字<4位

删除R中数据帧中列表中的数字<4位
EN

Stack Overflow用户
提问于 2020-02-17 11:43:53
回答 3查看 353关注 0票数 1

我有这样的数据框架,我需要删除项列中小于4位的值,

代码语言:javascript
复制
department  item
xyz009   c("1","676547","2","434567","3","567369","4","987654","6","54546676732")

输出

代码语言:javascript
复制
department  item

xyz009      676547,434567,567369,987654,54546676732

谢谢你的帮助

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-17 12:04:39

使用基本R,您可以使用unlist,和:

代码语言:javascript
复制
xyz009<-c("1","676547","2","434567","3","567369","4","987654","6","54546676732")
unlist(lapply(xyz009,function(x) x[nchar(x)>3]))

结果是:

代码语言:javascript
复制
[1] "676547"      "434567"      "567369"      "987654"      "54546676732"
票数 0
EN

Stack Overflow用户

发布于 2020-02-17 11:57:33

也许你可以试试nchar+subset

代码语言:javascript
复制
> subset(v,nchar(v)>4)
[1] "676547"      "434567"      "567369"     
[4] "987654"      "54546676732"

数据

代码语言:javascript
复制
v <- c("1","676547","2","434567","3","567369","4","987654","6","54546676732")
票数 2
EN

Stack Overflow用户

发布于 2020-02-17 11:57:03

1.创建一个minimal reproducible example

代码语言:javascript
复制
xyz009 <- c("1","676547","2","434567","3","567369","4","987654","6","54546676732")

2.使用R基的建议解决办法:

向量xyz009character

代码语言:javascript
复制
typeof(xyz009)

[1] "character"

为了对它进行数学运算(即使用>),我们必须使用as.numeric将它转换为数字。

代码语言:javascript
复制
num_xyz <- as.numeric(xyz009)

现在,我们可以使用索引“筛选”值,其中表达式的计算结果为TRUE

代码语言:javascript
复制
test_result <- num_xyz > 9999

向量test_result由布尔人组成。

代码语言:javascript
复制
test_result

[1] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE

我们可以使用这些布尔值作为“索引”(R只保留索引为TRUE的值):

代码语言:javascript
复制
num_xyz[test_result]

这将返回:

代码语言:javascript
复制
[1]      676547      434567      567369      987654 54546676732
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60261720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档