私は正の値と負の値の総数をidで与えて、おそらくdplyr
を使用する2つの変数を作成します。結果のデータセットは以下のようになりますグループごとに列の正の負の値を数えます
library(dplyr)
set.seed(42)
df <- data.frame (id=rep(1:10,each=10),
ff=rnorm(100, 0,14))
> head(df,20)
id ff
1 1 19.1934183
2 1 -7.9057744
3 1 5.0837978
4 1 8.8600765
5 1 5.6597565
6 1 -1.4857432
7 1 21.1613080
8 1 -1.3252265
9 1 28.2579320
10 1 -0.8779974
11 2 18.2681752
12 2 32.0130355
13 2 -19.4440498
14 2 -3.9030427
15 2 -1.8664987
16 2 8.9033056
17 2 -3.9795409
18 2 -37.1903759
19 2 -34.1665370
20 2 18.4815868
:
例データ
> head(df,20)
id ff pos neg
1 1 19.1934183 6 4
2 1 -7.9057744 6 4
3 1 5.0837978 6 4
4 1 8.8600765 6 4
5 1 5.6597565 6 4
6 1 -1.4857432 6 4
7 1 21.1613080 6 4
8 1 -1.3252265 6 4
9 1 28.2579320 6 4
10 1 -0.8779974 6 4
11 2 18.2681752 4 6
12 2 32.0130355 4 6
13 2 -19.4440498 4 6
14 2 -3.9030427 4 6
15 2 -1.8664987 4 6
16 2 8.9033056 4 6
17 2 -3.9795409 4 6
18 2 -37.1903759 4 6
19 2 -34.1665370 4 6
20 2 18.4815868 4 6
私はこれに似た何かがうまくいくと思っています
df<-df%>% group_by(id) %>% mutate(pos= nrow(ff>0)) %>% ungroup()
すべてのヘルプは素晴らしいことです、ありがとう。
ID内のいずれかの値が負の値であれば1、そうでない場合は0になるという第3の変数(0/1)を作成する方法を知っていますか? group_by文の中にifelseのようなものがありますか? – user63230
@ user63230おそらく 'group_by(id)%> mutate(neg = ifelse(id <0,1,0))'の行に沿った何か? – Megatron
@Megatronありがとう、正確ではないが、私はそれを働いた。ただ単に "any"を欲しかったので、コードは 'df <-df %>%group_by(id)%>%mutate(neg = ifelse(任意の(ff <0)、1,0) – user63230