Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转换MyR数据集进行关联分析_R_Dataframe_Data Wrangling - Fatal编程技术网

转换MyR数据集进行关联分析

转换MyR数据集进行关联分析,r,dataframe,data-wrangling,R,Dataframe,Data Wrangling,我是一个新手,熟悉R和数据处理,我正在尝试转换UCI单词数据集。默认数据集当前的结构也是如此 其中第一列是文档编号,第二列是引用另一个文本文件的单词编号,最后一列是单词在文档中出现的次数。(现在,我们可以忘记第三列,我知道如何从数据集中删除它。) 我试图做的是转换数据集,这样我就可以将每个文档的单词放在一行中。一个简单的例子是这样的 我尝试使用t()函数,但它会将整个数据集都转置在一起,这不是我想要的。我希望使用dplyr包来帮助处理数据,但我没有得到任何可靠的线索。如果你们有任何来源或特定

我是一个新手,熟悉R和数据处理,我正在尝试转换UCI单词数据集。默认数据集当前的结构也是如此

其中第一列是文档编号,第二列是引用另一个文本文件的单词编号,最后一列是单词在文档中出现的次数。(现在,我们可以忘记第三列,我知道如何从数据集中删除它。)

我试图做的是转换数据集,这样我就可以将每个文档的单词放在一行中。一个简单的例子是这样的

我尝试使用
t()
函数,但它会将整个数据集都转置在一起,这不是我想要的。我希望使用dplyr包来帮助处理数据,但我没有得到任何可靠的线索。如果你们有任何来源或特定的方向,你们可以推动我实现这一点,这将是有益的


谢谢大家!

这里有一个使用
tidyverse
包(包括
dplyr
)的解决方案。诀窍是首先添加另一列以区分第一列(文档编号)中具有相同值的条目,然后使用
pivot\u wide
将数据更改为宽格式

library(tidyverse)

# Your data
df <- read.csv(text = "num word
1 61
2 76
1 89
3 211
3 296", sep = " ")

df %>%
  # Group by num
  group_by(num) %>%
  # Add a rownumber to differentiate entries for the same first column value
  mutate(rownum = row_number()) %>%
  # Change data to wide format
  pivot_wider(id = num, 
              names_from = rownum,
              values_from = word)
库(tidyverse)
#你的数据
df%
#按数字分组
分组依据(num)%>%
#添加行号以区分相同第一列值的条目
变异(rownum=row_number())%>%
#将数据更改为宽格式
枢轴(id=num,
name_from=rownum,
值(从=字)

所以我能够想出如何完成这项任务。希望它能帮助其他DS的未来

data <- read.table("docword.kos.txt", sep = " ")

data <- data %>% select(V1, V2)

trans <- data %>% 
         group_by(V1) %>%
         summarise(words = paste(V2, collapse = ","))

trans <- trans %>% select(words)

您要查找的是
restrape2
包中的
dcast
函数以及类似的函数。好的,让我这样试试,我的数据集实际上有36000行长。因此,我必须编辑示例中的read.table()代码。是的。此外,您应该更改列名,使其与数据中的列名匹配(即“num”或“word”)。我认为这不对,我遇到了这个错误。UseMethod(“group_by”)中出错:“group_by”没有适用于“function”4类对象的方法。分组依据(,V1)3。变异(,rownum=row_number())2。pivot_更宽(,id=V1,names_from=rownum,values_from=V2)1。df%%>%groupby(V1)%%>%mutate(rownum=row\u number())%%>%pivot\u wide(id=V1,names\u from=rownum,values\u from=V2)您可以使用
dput
发布部分数据吗?这将更容易得到帮助。
write.csv(trans, "~\trend.csv", row.names = FALSE)