2015-07-20 46 views
0

我创建了一个数据帧的子集,然后删除了所有级别。然而,最后,我的子数据框仅以1(个)结束。在数据帧中丢失级别时的问题

我创建了一个数据帧,看起来的一个子集,如:

dfsubset <- df[5, ] 
    X1  X2  X3  X4   X5     X6   X7      
    NA Name  Series No Category Series Name Series Description Unit 

然而,当我检查新创建的数据集,我发现有很多的层次:

str(dfsubset) 
'data.frame': 1 obs. of 23 variables: 
$ X1 : num NA 
$ X2 : Factor w/ 3 levels "xxxx","xxxxx",..: 3 
$ X3 : Factor w/ 171 levels "1","10","100",..: 171 
$ X4 : Factor w/ 21 levels "xxxx","xxxx",..: 4 
$ X5 : Factor w/ 172 levels "xxxxxx",..: 132 
$ X6 : Factor w/ 172 levels "xxxxxxx",..: 138 
$ X7 : Factor w/ 36 levels "%","±%","Binary",..: 36 

因此,我使用了droplevels函数,希望我的数据框将保留在我需要的信息中(名称,系列号,类别,系列名称,系列描述,单元)

然而,我的数据帧结束了仅仅1(的)

dfsubset <- droplevels(dfsubset)  
str(dfsubset) 
    $ X1 : num NA 
    $ X2 : Factor w/ 1 level "Utility": 1 
    $ X3 : Factor w/ 1 level "Series No": 1 
    $ X4 : Factor w/ 1 level "Category": 1 
    $ X5 : Factor w/ 1 level "Series Name": 1 
    $ X6 : Factor w/ 1 level "Series Description": 1 
    $ X7 : Factor w/ 1 level "Unit": 1 

现在,我尝试使用新的数据帧与水平的功能names(df) <- subsetdf下降,我所得到的是列名也就是只。

如何结束包含我需要的信息(名称,系列号,类别等)而不是仅在names(df) <- subsetdf函数中使用的1(个)的信息的数据框?

+0

是否打印数据,好像无论你在你应该使用的数据读'头= TRUE' – rawr

+0

我使用read.xlsx函数读取数据。但是,我需要的头信息不在第一行,而是在其他行(它随着我读取几个.xlsx文件而变化,它可能在第二,第三和第十)。这些文件有很多噪音。 – dcgodoyg

+0

为什么要降低关卡?你是否打算将该因素转换为字符? –

回答

1

试试这个:

dfsubset <- sapply(df[5, ] , as.character) 
+0

谢谢!有效。 – dcgodoyg