【问题标题】:Create dataframe in R by selecting columns....but place the results by index通过选择列在 R 中创建数据框....但按索引放置结果
【发布时间】:2022-01-26 19:09:45
【问题描述】:

我正在尝试通过从多个数据帧中选择数据来创建数据帧...基本上是一个简单的 SQL 类型练习,但使用 R。示例数据在下面创建。数据帧 A 和 B。从两个数据帧中进行选择并创建一个新数据帧很简单,例如:

AB<-data.frame(COLUMN1=A$ID, COLUMN2=B$ONE, COLUMNS3=B$TWO, COLUMN4=A$JOB, COLUMN5=B$THREE)

或通过索引而不是列名来选择数据:

AB<-data.frame(COLUMN1=A[,1], COLUMN2=B$ONE, COLUMNS3=B$TWO, COLUMN4=A$JOB, COLUMN5=B$THREE)

然而,我实际上需要做的是创建一个数据框,而不是在“AB”中命名新列,我需要按索引指定它们,以便它们按正确的顺序排列。我尝试了以下方法,但它显然不起作用。任何帮助将不胜感激

AB<-data.frame([,1]=A$ID, [,2]=B$ONE, [,3]=B$TWO, [,4]=A$JOB, [,5]=B$THREE)

样本数据

A<-data.frame (ID=c("A", "B", "C"), CUSTOMER=c("1", "2", "3"), JOB=c("ONE", "TWO", "THREE"))

B<-data.frame (ONE=c("X", "Y", "Z"), TWO=c("10", "20", "30"), THREE=c("SMALL", "MEDIUM", "LARGE"))

【问题讨论】:

  • 我不太确定您在寻找什么。这是你想要的吗? AB <- data.frame(ID = A$ID, ONE = B$ONE, TWO = B$TWO, JOB = A$JOB, THREE = B$THREE)
  • 我很确定想要的最终结果是什么,一个与原始数据帧具有相同列名的 data.frame?如果是这种情况,那么cbind() 2 个数据框,然后重新排列列。
  • 这是一个非常简单的例子。实际上,我已经基于 RShiny 应用程序提取了几个文件,该应用程序使查询变得灵活。但是,我需要代替“ID”将 A$ID 放在索引位置 1,下一个在位置 2,下一个 3 ......等等。我不知道该怎么做

标签: r select indexing


【解决方案1】:

我认为@Dave2e 是正确的。您可以从两个数据框中选择列,cbind 结果并排序数据框。这可以使用列号或列名来完成。

使用列号 -

index1 <- c(1, 3)
index2 <- 1:3
res <- cbind(A[index1], B[index2])
res <- res[c(1, 3, 4, 2, 5)]
res

#  ID ONE TWO   JOB  THREE
#1  A   X  10   ONE  SMALL
#2  B   Y  20   TWO MEDIUM
#3  C   Z  30 THREE  LARGE

使用列名 -

name1 <- c('ID', 'JOB')
name2 <- c('ONE', 'TWO', 'THREE')
res <- cbind(A[name1], B[name2])
res <- res[c('ID', 'ONE', 'TWO', 'JOB', 'THREE')]
res

另一种选择是使用select -

library(dplyr)
res <- bind_cols(A, B) %>% select(ID, ONE, TWO, JOB, THREE)

【讨论】:

  • 谢谢你...“bind_cols”是做什么的?你能扩展一下吗?此行中的 A 和 B 是什么
  • bind_colsdplyr 的函数 cbind 它结合了两个数据框并添加了新列。 AB 取自您的帖子。
  • 完美 - 感谢您的回复。所以如果我还有更多,我只是列出它们,然后选择函数会识别它们来自哪个表?我正在努力复制的是从文件和相关列中选择的 SQL 类型语法,例如 file.column 作为新列名
猜你喜欢
  • 1970-01-01
  • 2023-01-27
  • 2021-10-10
  • 2021-08-21
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
相关资源
最近更新 更多