如何从数据框中删除列和行标签?

时间:2017-09-24 05:10:54

标签: r matrix dataframe

我有一个数据框

                          Dim 1       Dim 2
Low Acceleration    0.615631233 0.000141725
Medium Acceleration 0.531160937 0.288548459
High Acceleration   0.001130792 0.751136141

我想删除列标签和行标签,我该如何实现?我尝试使用rownames(abc) <- c()abc <- abc[,-1],其中abc是我的数据框。

我需要这样的东西

  0.615631233  0.000141725
  0.531160937  0.288548459
  0.001130792  0.751136141

4 个答案:

答案 0 :(得分:0)

你的想法是正确的。 rownames(abc) <- c() colnames(abc)<- c()将有效

df<- data.frame(col=c(1.34,3.45,2,56), row.names = c("a","b","c","d"))
df
    col
a  1.34
b  3.45
c  2.00
d 56.00

rownames(df)<- c()
colnames(df)<- c()
df

1  1.34
2  3.45
3  2.00
4 56.00

答案 1 :(得分:0)

正如@imo所指出的,如果您要按索引引用列和行,最好将dataframe转换为矩阵,尤其是当它全部时数字。你可以这样做:

mat = as.matrix(df)
dimnames(mat) = NULL

<强>结果:

> mat
            [,1]        [,2]
[1,] 0.615631233 0.000141725
[2,] 0.531160937 0.288548459
[3,] 0.001130792 0.751136141

数据:

df = read.table(text = "rownames Dim1 Dim2
                LowAcceleration 0.615631233 0.000141725
                MediumAcceleration 0.531160937 0.288548459
                HighAcceleration 0.001130792 0.751136141", header = TRUE, row.names = 1)

答案 2 :(得分:0)

一种简单的实现方法是使用unname()as.matrix(),即

mat <- unname(as.matrix(df))

如此

> mat
            [,1]        [,2]
[1,] 0.615631233 0.000141725
[2,] 0.531160937 0.288548459
[3,] 0.001130792 0.751136141

答案 3 :(得分:-1)

如果您使用更高效的数字结构(即Numpy数组),请使用pd.as_matrix(),这将返回Numpy数组:

def solution(a, b):
    n = a % b
    if n == 0:
        return 0

    mem = []
    n *= 10

    while True:
        n = n % b
        if n == 0:
            return 0
        if n in mem:
            i = mem.index(n)
            return len(mem[i:])
        else:
            mem.append(n)
        n *= 10