读取R中的CSV,第一列作为 Dataframe 标题

mnemlml8  于 2023-01-22  发布在  其他
关注(0)|答案(4)|浏览(356)

我有一个简单的文本文件,其中第一列是名称(字符串),第二列是值(浮点数)。

Name, Age
John, 32
Heather, 46,
Jake, 23
Sally, 19

我想把它作为一个 Dataframe 读入(把它叫做df),但是要调换位置,这样我就可以通过名字访问age,这样df$John就会返回32
之前,我尝试创建一个新的 Dataframe tdf,在for循环中遍历数据,分配每个nameage,然后作为tdf[name] = age插入到空 Dataframe 中,但这并不像我预期的那样工作。

unhi4e5o

unhi4e5o1#

您可以使用read.table()读取数据。
然后可以使用t()对其进行转置,并在之后设置列名。
示例:
如果df为:

df=read.table("dummydata", header=T, sep=",")

df
     Name Age
1    John  32
2 Heather  46
3    Jake  23
4   Sally  19

你可以转换年龄,然后把它们转换成 Dataframe :

tdf=as.data.frame(t(df$Age))
colnames(tdf)=t(df$Name)

因此tdf将返回:

tdf
  John Heather Jake Sally
1   32      46   23    19

正如您所问,tdf $John将返回:

tdf$John
[1] 32

现在,如果您有两个以上的列,您可以执行相同的操作,但您可以使用括号简单地指示位置,而不是指示列的名称。

df=read.table("dummydata", header=T, sep=",")

使用t(df [2:ncol(df)])可以从第二列开始转置整个表,而不管列数是多少,第一列将是转置后的名称。

tdf=as.data.frame(t(df[2:ncol(df)]))

然后设置列名。

colnames(tdf)=t(df[1])

tdf$John
[1] 32
mzaanser

mzaanser2#

这将在您读取文件时添加行作为标题

read.csv2(filename, as.is = TRUE, header = TRUE)
kupeojn6

kupeojn63#

将数据读入 Dataframe DF(参见注解)。

**1)**将名字分配给DF的行,在这种情况下,这将给予John的年龄,而不必创建新的数据结构:

rownames(DF) <- DF$Name
DF["John", "Age"]
## [1] 32

**2)**或者,将DF拆分为一个命名列表,这样您可以获得所需的精确语法:

ages <- with(DF, split(Age, Name))
ages$John
## [1] 32

**3)**此备选方案也将创建相同的列表:

ages <- with(DF, setNames(as.list(Age), Name))

注:DF的可重复形式如下所示。(我们已经删除了问题中一行的尾随逗号,但如果它确实存在,则在read.csv行添加fill = TRUE。)

Lines <- "Name, Age
John, 32
Heather, 46
Jake, 23
Sally, 19"
DF <- read.csv(text = Lines)
vnjpjtjt

vnjpjtjt4#

有点晚了,但希望能有所帮助。“row.names”参数允许您选择所需的列作为标题:

read.csv("df.csv", header = TRUE, row.names = 1)

相关问题