【问题标题】:Please assist in understanding an R import from csv请协助理解从 csv 导入的 R
【发布时间】:2018-01-25 20:46:21
【问题描述】:

我有这样的 R 代码,我无法执行,因为我没有安装包的权限,所以需要一些帮助来理解它在做什么。

raw_data<- read.csv("raw_data.csv")
attach(raw_data)
raw_data$new_col<- raw_data$Employee.Name
raw_data <- select(raw_data, - Employee.Name)

我是否更正了第 3 行正在创建一个名为 new_col 的新字段并从 csv 字段 Employee Name 分配值。这 。应该掩盖 Employee 和 Name 之间的空格

在第 4 行,我们只是从数据集中删除原始列?

【问题讨论】:

  • 是的,没错
  • 这里没有使用非基础包。这里不需要attach()(通常应该避免)。目前还不清楚您的问题到底是什么。
  • @MrFlick, select() 在 tidyverse 中,而不是在 base R 中。
  • @BenBolker Doh。我把它和subset()混淆了。好点子。但在这种情况下使用它非常奇怪。这 4 行代码让我大吃一惊,因为它们是多么奇怪。如果你打算使用dplyr/tidyverse,为什么不在这里使用mutate()
  • 您无需拥有管理员权限即可安装 r 或 rstudio 以及 r 软件包。如果我没记错,您需要定义一个本地安装文件夹。我也没有管理员权限,我可以随意执行 R 代码。我以这种方式解决的库路径有问题:stackoverflow.com/a/42643674/2344958

标签: r


【解决方案1】:

是的,第四行 (raw_data &lt;- select(raw_data, - Employee.Name)) 正在使用 dplyr 包中的 select() 函数从数据集中删除列/变量。基本的 R 等效项是

subset(raw_data, select = -Employee.Name)

raw_data[,!(names(raw_data)=="Employee.Name")]

几乎所有现代 R 课程都建议避免使用 attach()(甚至是它自己的帮助页面!)

此处的操作通过复制员工姓名列创建一个新列,然后删除员工姓名列。改为重命名列可能更有效且更易于理解。

names(raw_data)[names(raw_data)=="Employee.Name"] <- "new_col"

或者在tidyverse中

rename(raw_data, new_col = Employee.Name)

(见here

【讨论】:

    猜你喜欢
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 2019-02-19
    相关资源
    最近更新 更多