选择dataframe中具有相同列名的所有行

时间:2017-08-31 06:09:26

标签: r

我的数据框中有一些重复的字符串。

df<-data.frame(matrix(ncol = 8, nrow = 0))
df<-rbind(df,c(1:8))
colnames(df) <- c("c1","c2","c3","c4","c1","c2","c5","c6")

> df
  c1 c2 c3 c4 c1 c2 c5 c6
1  1  2  3  4  5  6  7  8

如图所示,列c1c2重复两次。但我只能在调用dataframe时访问第一个出现的列。

> df$c1
[1] 1
> df$c2
[1] 2
> df[,"c1"]
[1] 1
> df[,"c2"]
[1] 2

我如何访问所有值,即。 c1: 1, c1:5调用某种df[,"c1"]

  

注意:数据框重复冒号的原因是嵌套列表转换为数据框

2 个答案:

答案 0 :(得分:2)

如果你只想要c1列,试试这个

df[1,names(df) %in% ('c1')]

如果您想要所有具有重复名称的列的值,请尝试此

df[1,names(df) %in% names(df)[duplicated(names(df))]]

答案 1 :(得分:0)

你可以试试这个

df <- data.frame(matrix(ncol = 8, nrow = 0));
df <- rbind(df, c(1:8));
colnames(df) <- c("c1", "c2", "c3", "c4", "c1", "c2", "c5", "c6");
df[, names(df) == 'c1'];
sapply(unique(names(df)), function(x) unname(unlist(df[, names(df) == x])))