首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用R清理Excel表格中的数据

使用R清理Excel表格中的数据
EN

Stack Overflow用户
提问于 2011-09-11 04:04:49
回答 3查看 3.3K关注 0票数 1

我在Excel工作表中有数据,我需要一种方法来清理它。我想删除不一致的值,如分支机构名称指定为(计算机科学与工程,C.S.E,C.S,计算机科学)。那么,我如何才能将所有这些都整合到一个符号中呢?

EN

回答 3

Stack Overflow用户

发布于 2011-09-11 04:08:22

car包有一个recode函数。请参阅它的帮助页面以获取工作示例。

事实上,可以认为这应该是一个封闭的问题:

Why is recode in R not changing the original values?

How to recode a variable to numeric in R?

Recode/relevel data.frame factors with different levels

还有一些更容易通过搜索识别的问题:

编辑:我非常喜欢Marek的评论,所以我决定做一个实现它的函数。(对我来说,因素一直是R陷阱之一,他的方法似乎非常直观。)该函数被设计为接受字符或因子类输入,并返回一个分组结果,该结果也划分为"all_others“级别。

代码语言:javascript
复制
my_recode <- function(fac, levslist){ nfac <- factor(fac);
    inlevs <- levels(nfac);
    othrlevs <- inlevs[ !inlevs %in% unlist(levslist) ]
      # levslist of the form ::::    list(
      #     animal = c("cow", "pig"),
      #     bird = c("eagle", "pigeon") )
 levels(nfac)<- c(levslist, all_others =othrlevs); nfac}

 df <- data.frame(name = c('cow','pig','eagle','pigeon', "zebra"), 
              stringsAsFactors = FALSE)
 df$type <- my_recode(df$name, list(
     animal = c("cow", "pig"),
     bird = c("eagle", "pigeon") ) )
 df
#-----------
    name       type
1    cow     animal
2    pig     animal
3  eagle       bird
4 pigeon       bird
5  zebra all_others
票数 6
EN

Stack Overflow用户

发布于 2011-12-15 00:20:07

您想要一种清理数据的方法,但您指定了R。这是有原因的吗?(自动化、远程控制控制台等...)

如果没有,我建议使用Open Refine。这是一个伟大的工具,完全这项工作。它是而不是托管的,你可以安全地下载它并在你的数据集上运行(xls/xlsx工作良好),然后你创建一个文本facet并分组离开。

它使用先进的算法(甚至给你一个选择),真的很有帮助。我在短时间内清理了大量数据。

official web site上的视频很有用。

票数 3
EN

Stack Overflow用户

发布于 2011-09-11 06:36:35

对于这些类型的问题,没有一刀切的解决方案。据我所知,您的分支机构名称的标签不一致。

您可能希望看到C.S.E.,但您实际拥有的是CS、Computer Science、CSE等,可能还有许多其他分支机构名称不一致。

我要做的第一件事是在文件中获得一个唯一的Branch名称列表。我将提供一个使用letters()的示例,这样您就可以理解我的意思

代码语言:javascript
复制
your_df <- data.frame(ID=1:2000)
your_df$BranchNames <- sample(letters,2000, replace=T)
your_df$BranchNames <- as.character(your_df$BranchNames) # only if it's a factor
unique.names <- sort(unique(your_df$BranchNames))

现在我们有了一个唯一值的排序列表,我们可以创建一个记录代码的列表:

假设我们想要将A到G重命名为A

代码语言:javascript
复制
your_df$BranchNames[your_df$BranchNames %in% unique.names[1:7]] <- "A"

您可以重复上面的过程,根据需要消除或分组唯一的名称。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7374314

复制
相关文章

相似问题

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