R:row.names和数据操作/导出

时间:2013-01-14 17:12:37

标签: r export dataframe

我有一些问题需要了解row.names是什么以及它是如何运作的。而且,我如何使我的数据能够完成row.names允许人们做的事情。

例如,我正在使用下面的代码创建一些集群(我的数据)。我想导出sapply行的结果,但现在只导出屏幕。我的数据框的第一列(path_country)是国家/地区名称,其他列是其他变量(整数)。我没有看到将这些群集导出到表格或国家/地区列表及其组成员身份的简便方法。

我尝试使用R中的示例数据集制作一个虚拟示例。例如,mtcars,然后我注意到第一列被表示为row.names。使用mtcars,我可以创建群集cutree到指定数量的组,然后另存为数据框。通过这种方法,我在第一列中有'汽车名称',第二列中有组号(或多或少,可以清理看起来更好,但基本上就是我所追求的),这就是我想要的与我的数据一起发生。

对此的任何想法都将不胜感激。

# my data
path_country <- read.csv("C:/path_country.csv")
patho <- subset(path_country, select=c(2:188))
patho.d <- dist(patho)

patho.hclust <- hclust(patho.d)
patho.hclust.groups11 = cutree(patho.hclust,11)
sapply(unique(patho.hclust.groups11),function(g)path_country$Country[patho.hclust.groups11 == g])

# mtcars data
car.d <- dist(mtcars)
car.h <- hclust(car.d)
car.h.11 <- cutree(car.h, 11)
nice_result <- as.data.frame(car.h.11)
write.table(nice_result, "test.txt", sep="\t")

1 个答案:

答案 0 :(得分:1)

1)您可以使用CSV文件中的data.frame创建row.names

# Names in the first column
path_country <- read.table("C:/path_country.csv", row.names=1)
# Names in column "Country"
path_country <- read.table("C:/path_country.csv", row.names="Country", head=TRUE)

请注意,在第二种情况下,您应指定head=TRUE以使用列的名称。

现在rownames(path_country)应该为您提供包含行名称的向量,并为导出提供as.data.frame(patho.hclust.groups11)不错的结果。

2)您可以随时使用命令为data.frame指定行的名称:

rownames(path_country) <- names.vector

其中names.vector是一个向量,其唯一名称长度等于data.frame中的行数。在您的示例中:

rownames(patho.hclust.groups11) <- path_country$Country

请注意,如果您使用第一种方法,则不需要此命令。