R 中的数据管理
Data Management in R
所以我有这段代码,我试图将名为 grade prek-12 的单独列合并到一个名为 Grade
的列中。我使用了 tidyr
包并使用这行代码来执行上述任务:
unite(dta, "Grade",
c(Gradeprek,
dta$Gradek, dta$Grade1, dta$Grade2,
dta$Grade3, dta$Grade4, dta$Grade5,
dta$Grade6, dta$Grade7, dta$Grade8,
dta$Grade9, dta$Grade10, dta$Grade11,
dta$Grade12),
sep="")
但是,我一直收到这样的错误消息:
error: All select() inputs must resolve to integer column positions.
The following do not: * c(Gradeprek, dta$Gradek, dta$Grade1, dta$Grade2, dta$Grade3, dta$Grade4, dta$Grade5, dta$Grade6, ...
Penny,感谢您对我如何解决这个问题的看法。
您正在混合和匹配 unite
和 unite_
的两个语法选项 - 您需要选择一个并坚持使用。在这两种情况下,都不要使用 data$column
- 它们采用数据参数,因此您无需重新指定列来自哪个数据框。
选项 1:NSE 默认的非标准评估意味着裸列名称 - 没有引号!没有 c()
。
unite(dta, Grade, Gradeprek, Gradek, Grade1, Grade2, Grade3, ...,
Grade12, sep = "")
您可以使用一些技巧。例如,如果您的所有 Grade
列在您的数据框中都按此顺序彼此相邻,您可以执行
unite(dta, Grade, Gradeprek:Grade12, sep = "")
您还可以使用 starts_with("Grade")
获取所有以该字符串开头的列。有关详细信息,请参阅 ?unite
及其 link 至 ?select
。
选项 2:标准评估 您可以使用 unite_()
作为标准评估替代方案,该替代方案需要字符向量中的列名。在这种情况下,这样做的好处是让您可以使用 paste()
按照您想要的顺序构建列名:
unite_(dta, col = "Grade", c("Gradeprek", "Gradek", paste0("Grade", 1:12)), sep = "")
所以我有这段代码,我试图将名为 grade prek-12 的单独列合并到一个名为 Grade
的列中。我使用了 tidyr
包并使用这行代码来执行上述任务:
unite(dta, "Grade",
c(Gradeprek,
dta$Gradek, dta$Grade1, dta$Grade2,
dta$Grade3, dta$Grade4, dta$Grade5,
dta$Grade6, dta$Grade7, dta$Grade8,
dta$Grade9, dta$Grade10, dta$Grade11,
dta$Grade12),
sep="")
但是,我一直收到这样的错误消息:
error: All select() inputs must resolve to integer column positions. The following do not: * c(Gradeprek, dta$Gradek, dta$Grade1, dta$Grade2, dta$Grade3, dta$Grade4, dta$Grade5, dta$Grade6, ...
Penny,感谢您对我如何解决这个问题的看法。
您正在混合和匹配 unite
和 unite_
的两个语法选项 - 您需要选择一个并坚持使用。在这两种情况下,都不要使用 data$column
- 它们采用数据参数,因此您无需重新指定列来自哪个数据框。
选项 1:NSE 默认的非标准评估意味着裸列名称 - 没有引号!没有 c()
。
unite(dta, Grade, Gradeprek, Gradek, Grade1, Grade2, Grade3, ...,
Grade12, sep = "")
您可以使用一些技巧。例如,如果您的所有 Grade
列在您的数据框中都按此顺序彼此相邻,您可以执行
unite(dta, Grade, Gradeprek:Grade12, sep = "")
您还可以使用 starts_with("Grade")
获取所有以该字符串开头的列。有关详细信息,请参阅 ?unite
及其 link 至 ?select
。
选项 2:标准评估 您可以使用 unite_()
作为标准评估替代方案,该替代方案需要字符向量中的列名。在这种情况下,这样做的好处是让您可以使用 paste()
按照您想要的顺序构建列名:
unite_(dta, col = "Grade", c("Gradeprek", "Gradek", paste0("Grade", 1:12)), sep = "")