为什么数据框维度中缺少可见列?
Why is visible column missing from data frame dimensions?
我有一个名为 df.alt.alleles 的非常长的数据框,看起来像这样(约 900 万行):
AC
1:123456789_G/C 5
1:139406018_A/T 21
1:156902649_C/G 47
1:189027493_A/G 23
当我找到 class 时,我被告知这是一个数据框:
class(df.alt.alleles)
##"data.frame"
当我查询维度时,我被告知只有一列,但在查看时似乎有两列。
dim(df.alt.alleles)
##
我想找到 _ 的所有实例并删除它以及该列中它之后的所有内容,以生成如下所示的新数据框(但对于所有 900 万行):
AC
1:123456789 5
1:139406018 21
1:156902649 47
1:189027493 23
我试过使用:
sub("_\S*", "", "df.alt.alleles")
这里建议:Remove everything after a string in a data frame column with missing values
这个returns一个字符串,其中包含"AC"列中的所有数字。
注意: 对不起,如果这是一个糟糕的问题,但我是一个完整的 R 新手,并且已经到处搜索了一些看起来非常基本的解释。如果问题格式不正确,我深表歉意,我对此完全陌生,我会采纳任何建议!
在这里,你可以看到问题和更正,我相信:
df
AC
1:123456789_G/C 5
1:139406018_A/T 21
1:156902649_C/G 47
1:189027493_A/G 23
df$somename <- row.names(df)
df
AC somename
1:123456789_G/C 5 1:123456789_G/C
1:139406018_A/T 21 1:139406018_A/T
1:156902649_C/G 47 1:156902649_C/G
1:189027493_A/G 23 1:189027493_A/G
row.names(df) <- NULL
df
AC somename
1 5 1:123456789_G/C
2 21 1:139406018_A/T
3 47 1:156902649_C/G
4 23 1:189027493_A/G
使用 dplyr 和 tidyr:
library(dplyr)
library(tidyr)
df %>%
add_rownames("variant") %>%
separate(variant, into = c("chr", "bp", "allele"), sep = "_|:", remove = FALSE)
# Source: local data frame [4 x 5]
#
# variant chr bp allele AC
# (chr) (chr) (chr) (chr) (int)
# 1 1:123456789_G/C 1 123456789 G/C 5
# 2 1:139406018_A/T 1 139406018 A/T 21
# 3 1:156902649_C/G 1 156902649 C/G 47
# 4 1:189027493_A/G 1 189027493 A/G 23
我有一个名为 df.alt.alleles 的非常长的数据框,看起来像这样(约 900 万行):
AC
1:123456789_G/C 5
1:139406018_A/T 21
1:156902649_C/G 47
1:189027493_A/G 23
当我找到 class 时,我被告知这是一个数据框:
class(df.alt.alleles)
##"data.frame"
当我查询维度时,我被告知只有一列,但在查看时似乎有两列。
dim(df.alt.alleles)
##
我想找到 _ 的所有实例并删除它以及该列中它之后的所有内容,以生成如下所示的新数据框(但对于所有 900 万行):
AC
1:123456789 5
1:139406018 21
1:156902649 47
1:189027493 23
我试过使用:
sub("_\S*", "", "df.alt.alleles")
这里建议:Remove everything after a string in a data frame column with missing values
这个returns一个字符串,其中包含"AC"列中的所有数字。
注意: 对不起,如果这是一个糟糕的问题,但我是一个完整的 R 新手,并且已经到处搜索了一些看起来非常基本的解释。如果问题格式不正确,我深表歉意,我对此完全陌生,我会采纳任何建议!
在这里,你可以看到问题和更正,我相信:
df
AC
1:123456789_G/C 5
1:139406018_A/T 21
1:156902649_C/G 47
1:189027493_A/G 23
df$somename <- row.names(df)
df
AC somename
1:123456789_G/C 5 1:123456789_G/C
1:139406018_A/T 21 1:139406018_A/T
1:156902649_C/G 47 1:156902649_C/G
1:189027493_A/G 23 1:189027493_A/G
row.names(df) <- NULL
df
AC somename
1 5 1:123456789_G/C
2 21 1:139406018_A/T
3 47 1:156902649_C/G
4 23 1:189027493_A/G
使用 dplyr 和 tidyr:
library(dplyr)
library(tidyr)
df %>%
add_rownames("variant") %>%
separate(variant, into = c("chr", "bp", "allele"), sep = "_|:", remove = FALSE)
# Source: local data frame [4 x 5]
#
# variant chr bp allele AC
# (chr) (chr) (chr) (chr) (int)
# 1 1:123456789_G/C 1 123456789 G/C 5
# 2 1:139406018_A/T 1 139406018 A/T 21
# 3 1:156902649_C/G 1 156902649 C/G 47
# 4 1:189027493_A/G 1 189027493 A/G 23