【问题标题】:How i can shift one row of data frame to first row?我如何将一行数据框移到第一行?
【发布时间】:2017-06-05 13:20:06
【问题描述】:

如何将一个原始数据帧转换为第一个原始数据,我希望 id raw 成为第一个原始数据。在R中。

Sepal.Length Sepal.Width Petal.Length Petal.Width Species

5.1         3.5          1.4         0.2         setosa
4.9         3.0          1.4         0.2         setosa
4.7         3.2          1.3         0.2         setosa
4.6         3.1          1.5         0.2         setosa
5.0         3.6          1.4         0.2         setosa
id           A            B           C            D

【问题讨论】:

  • 期望的输出是什么?你想让有问题的行成为标题吗?
  • 是的,我想成为标题
  • 对于给定的 csv,您可以 data.table::fread("given.csv",skip=N) 其中 N 是要跳过的所需行数

标签: r list dataframe transfer shift


【解决方案1】:

我们可以使用grepl根据'Sepal.Length'中的'id'创建一个逻辑向量,然后通过提取该行并从原始数据集中删除该行来设置数据集的列名

i1 <- grepl("id", df1$Sepal.Length)
setNames(df1[!i1,], unlist(df1[i1,]))
#   id   A   B   C      D
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa

【讨论】:

  • 我做到了,但所有元素都转换为 NA!怎么了!
  • @AgriiEnginee 请检查您数据的str。我以为都是character
  • @AgriiEnginee 您可以先将列转换为character 即。 df1[] &lt;- lapply(df1, as.character)
【解决方案2】:

您可以执行以下操作(假设您的 ID 是第 N 行):

df <- iris # Example of data.frame
myIdrow <- 5 # as an example id row
df2 <- df[c(myIdrow, (1:nrow(df))[-myIdrow]), ]

虽然我建议将 ID 作为列名。

【讨论】:

  • 我想将 raw 标识为 header raw
猜你喜欢
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 2019-10-27
  • 2019-02-01
  • 1970-01-01
相关资源
最近更新 更多