【发布时间】:2018-01-17 18:27:02
【问题描述】:
我正在尝试准备一个数据框以输入 networkd3 的 forceNetwork 函数
这是我的数据示例:
structure(list(Case.Number = c("127967", "127967", "127967",
"127967", "141330", "141330", "141330", "141330", "141240", "141240",
"141240"), Word = c("account", "want", "membership", "sort",
"unhappi", "vr", "info", "miss", "csrf", "unhappi", "dissatisfi"
)), .Names = c("Case.Number", "Word"), class = c("data.table",
"data.frame"), row.names = c(NA, -11L))
对于每个案例编号的单词,我想生成一个数据框,其中包含所有可能(且唯一)的两个单词组合的两列,如下所示,同一列没有重复的组合(包括倒序),也没有同一个词
127967 account want
127967 account membership
127967 account sort
127967 want membership
127967 want sort
141330 unhappi vr
141330 unhappi info...
excluding
141330 unhappi unhappi
我尝试了以下方法来获得组合:
source <- c("remove")
target <- c("remove")
ID <- c("remove")
df <- data.frame(ID = c("remove"), source = c("remove"), target = c("remove"))
for(i in unique(tbl$Case.Number)){
for (r in grep(i, tbl$Case.Number)) {
if(r < max(grep(i, tbl$Case.Number))){
ID <- i
source <- tbl$Word[r]
target <- tbl$Word[r+1]
rbind(df, cbind(ID, source,target))
}
}
}
View(df)
但它不起作用。
有没有更清洁的方法?
【问题讨论】: