我是试图学习R.的更大的生物学家,并且我有一个如下的数据集:
set group
A 10
B 10
A 11
A 11
A 34
B 34
B 67
我正在尝试拔出组相同但集合不同的所有对。例如,我的理想输出应如下所示:
set group
A 10
B 10
A 34
B 34
我尝试了以下代码,但没有得到所需的内容。有人可以帮忙吗?提前致谢。
for (i in group) {
if(set == "A" || (set == "B")) {
print(set)
答案 0 :(得分:2)
这是report zz_test_split_capital.
parameters: p_input type string default 'NameAgeAddress' lower case.
data: output type stringtab,
off type i,
moff type i,
mlen type i.
while off < strlen( p_input ).
find regex '[A-Z][^A-Z]*'
in section offset off of p_input
match offset moff match length mlen.
if sy-subrc eq 0.
append substring( val = p_input off = moff len = mlen ) to output.
off = moff + mlen.
else.
exit.
endif.
endwhile.
cl_demo_output=>display_data( output ).
的一个选项,其中我们按'group'分组,然后按my $input = "NameAgeAddress";
my @output = split /(?=[A-Z])/, $input;
# gives @output = ('Name','Age','Address')
分组以使'set'的不同元素数保持为2
dplyr
filter
答案 1 :(得分:1)
我们可以依靠R base
> do.call(rbind, lapply(split(dat, dat$group), function(x) x[length(unique(x$set))==2]))
set group
10.1 A 10
10.2 B 10
34.5 A 34
34.6 B 34
答案 2 :(得分:1)
还有dplyr
的可能性:
df %>%
group_by(group) %>%
filter(n() == 2 & any(set != first(set)))
set group
<chr> <int>
1 A 10
2 B 10
3 A 34
4 B 34