我有一个演员名单:
name <- c('John Doe','Peter Gynn','Jolie Hope')
age <- c(26 , 32, 56)
postcode <- c('4011', '5600', '7700')
actors <- data.frame(name, age, postcode)
name age postcode
1 John Doe 26 4011
2 Peter Gynn 32 5600
3 Jolie Hope 56 7700
我还有一份关系清单:
from <- c('John Doe','John Doe','John Doe', 'Peter Gynn', 'Peter Gynn', 'Jolie Hope')
to <- c('John Doe', 'John Doe', 'Peter Gynn', 'Jolie Hope', 'Peter Gynn', 'Frank Smith')
edge <- data.frame(from, to)
from to
1 John Doe John Doe
2 John Doe John Doe
3 John Doe Peter Gynn
4 Peter Gynn Jolie Hope
5 Peter Gynn Peter Gynn
6 Jolie Hope Frank Smith
首先,我想在我的边缘列表中消除自引用,即我的边缘中的1,2,5行&#39;数据帧。
non.self.ref <- edge[!(edge$from == edge$to),]
不会产生预期的结果。
其次,edge包含一个不在&#39; actor中的名字。数据框(&#39;弗兰克史密斯&#39;)。我想补充一下弗兰克史密斯&#39;我的演员&#39;数据框,即使我没有“弗兰克史密斯”的年龄或邮政编码数据。例如:
name age postcode
1 John Doe 26 4011
2 Peter Gynn 32 5600
3 Jolie Hope 56 7700
4 Frank Smith NA NA
我会感激一个整洁的解决方案!
答案 0 :(得分:1)
以下是这两个部分的 void arithmetic (int *a, int n, int *b)
{
int *arr1; arr1=a; int *arr2; arr2=b;
int i;
for(i = 0; i < n; i++) {
*arr1 = *(((a + i) + 6) % 10);
*arr2 = *arr1;
}
}//don't know if the function is correct.
解决方案,但一般情况下不要在每个问题上提出多个问题。
tidyverse
允许使用非常直观的语法,仅指定您希望保留filter
不等于from
的行。to
向上gather
和from
列,因此所有参与者都在一列中。然后我们使用to
给我们留下一个包含唯一actor名称的列tbl。最后,我们可以使用distinct
来组合表格。 full_join
保留两个表中的所有行和列,默认情况下匹配共享名称列,如果没有数据则填充full_join
(因为没有Frank)。NA
由reprex package(v0.2.0)创建于2018-03-02。
答案 1 :(得分:0)
我发现包括stringsAsFactors = FALSE
例如
edge <- data.frame(from, to, stringsAsFactors = F)
然后:
non.self.ref <- edge[!(edge$from == edge$to),]
作品!