用紙については、平均±SD形式の結果が必要です。ループのある条件に基づいた文字列の追加R
- ないグルーピング係数(DFは、例えば、唯一の分子からのデータを持っている)、単位なし:4つの状況が存在する±は単位を有する
- グループ化因子、単位なし
- ないグループ化因子、SD平均:平均±SDミリリットル
- 単位
と要因を、グループIは、最初の3つの状況を解決する機能を作ったが、私は最後に行うことはできません。以下はその例です:
df <- data.frame(treatment = c(rep(c("Stimulation", "Control"), 8)),
group = c(rep(c("A", "B"), 4),
rep(c("B", "A"), 4)),
value = rnorm(16, mean = 150, sd = 20))
df$units <- ifelse(df$group == "A", "ml", "min")
strg <- function(df, vec, u){
l <- lapply(levels(vec), function(x){
list(
Stimulation = paste(
myround(mean(df$value[vec==x & df$treatment=="Stimulation"]), 2), "±",
myround(sd(df$value[vec==x & df$treatment=="Stimulation"]), 2)
),
Control = paste(
myround(mean(df$value[vec==x & df$treatment=="Control"]), 2), "±",
myround(sd(df$value[vec==x & df$treatment=="Control"]), 2)
))
})
set_names(l, levels(vec))
}
a <- strg(df, vec = df$group, u = df$units)
add_unit <- function(list, vec, u){
z <- lapply(list, function(x){
list(
Stimulation = paste(x$Stimulation, u[vec==x]),
Control = paste(x$Control, u[vec==x]))
})
}
b <- add_unit(a, vec = df$group, u = df$units)
問題は、[vec == x]ビットのようです。最終的な出力は平均±SDと一致した単位を持つ必要があります。グループ化係数を一致させてユニットを追加するにはどうすればよいですか?
EDIT: グループが存在する場合、最終的な結果は、次のようになりますし、私たちは何の単位が必要ない場合は、それはむしろ、次のようになりますユニットに
[[1]]
[[1]]$Stimulation
[1] "154.37 ± 15.9 ml"
[[1]]$Control
[1] "153.32 ± 15.79 ml"
[[2]]
[[2]]$Stimulation
[1] "152.24 ± 17.78 min"
[[2]]$Control
[1] "138.48 ± 31.96 min"
を追加したい:
[[1]]
[[1]]$Stimulation
[1] "154.37 ± 15.9"
[[1]]$Control
[1] "153.32 ± 15.79"
[[2]]
[[2]]$Stimulation
[1] "152.24 ± 17.78"
[[2]]$Control
[1] "138.48 ± 31.96"
(基本的に私がしようとしたのは、上記の文字列を "a"で作成し、必要に応じて最後に "b"をつけることでした)
ようこそ:あなたの質問を編集し、* ideal * 'b'を追加すると、検証データを使用できます。 –
そして 'a'。あなたのコードは 'paste'で爆発しています。 –
@ShawnMehan私は2つの例を追加しました。それはあなたが求めていたものですか? – mariachi