【问题标题】:how to convert a type double to a data table in R如何将类型double转换为R中的数据表
【发布时间】:2020-05-24 21:49:38
【问题描述】:

我有如下 double 类型的数据:

               V1
2.policy       37

3.payments     51

4.supervisory  45

5.housing      22

6.inflation    11

所有数字(词频)的V1是第1列,带有单词的序列号是第0列,我希望它是数据表的形式,其中一列单词和对应列的数字。

有人可以告诉我如何做到这一点,因为 setDT 等一般功能不适用于“double”类型

谢谢

【问题讨论】:

  • 第 0 列是什么意思? R 中的索引从 1 开始。你的意思是名字吗? str(object) 的输出是什么?请提供一个最小的可重现示例see here。也许你可以试试df <- data.frame(words = rownames(object), value = object$V1, stringsAsFactors=FALSE)
  • str(object) 给出这个 Named num [1:797] 37 51 45 22 11 73 26 72 31 68 ... - attr(*, "names")= chr [1:797] “2.policy” “3.payments” “4.supervisory” “5.housing” ...
  • 无法在此处生成可重现的示例,因为当前的双精度对象源自一个漫长的过程,使用 data.frame 不起作用,如果我将光标放在名称列标题上,则会出现第 0 列
  • 由于您的对象已命名为 num,请参见:stackoverflow.com/questions/16816032/…

标签: r


【解决方案1】:

不确定我是否真的理解你想要什么,但如果你有一个双精度类型的命名向量:

myvec <- c(policy = 37, payments = 51, supervisory = 45, 
           housing = 22, inflation = 11)

您可以将其转换为数据表:

dt <- data.table::as.data.table(myvec, .keep.rownames = "word")

【讨论】:

  • 我之前也试过,它只给了我第二列,即数字 s,如何提取第一列(或列 0 'rownames')中的单词
  • 使用 .keep.rownames 参数,名称被放入一个实际的列中(即对象 dt 有 2 列)。
  • 使用 keep.rowname 为 true,然后使用 stringr::str_extract(dt, "[az]+") 仅提取 dt 中的单词,因为它最初带有单词和序列号跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多