我想使用t.test函數比較存儲在數據幀中的值組。假設我的數據框有2列:「組」和「結果」和40行。 「結果」列包含我想要比較的值,「組」列表示值被分成的組:例如4個組(a,b,c,d)各有10個值。R:在數據幀或矩陣中使用t.test函數
如何表明我只想測試屬於組a的值與屬於組b的值?
另外,是否有一種簡單的方法將屬於組a的值提取到矢量中(我們稱之爲「vecta」),以便隨意比較矢量?
在此先感謝! Seb
我想使用t.test函數比較存儲在數據幀中的值組。假設我的數據框有2列:「組」和「結果」和40行。 「結果」列包含我想要比較的值,「組」列表示值被分成的組:例如4個組(a,b,c,d)各有10個值。R:在數據幀或矩陣中使用t.test函數
如何表明我只想測試屬於組a的值與屬於組b的值?
另外,是否有一種簡單的方法將屬於組a的值提取到矢量中(我們稱之爲「vecta」),以便隨意比較矢量?
在此先感謝! Seb
您問:「我如何表明我只想測試屬於組a的值與屬於組b的值?」
假設你的數據幀被稱爲df
。與B組相比組與t.test可以使用例如:
t.test(df$result[df$group=="a"], df$result[df$group=="b"])
# or
with(df, t.test(result[group=="a"], result[group=="b"]))
# or, fo rexample
t.test(result~group, data=subset(df, group %in% c("a", "b")))
所有的方法應該工作,但沒有經過測試,你沒有張貼任何數據。例如:P
「另外,有一種簡單的方法將屬於組a的值提取到一個向量中(我們稱之爲「vecta」),以便隨意比較向量?
是,
df$value[def$group=="a"] # result is a vector
謝謝,那是正是我一直在尋找這整個下午:) – user2617763
有上t.test
在的幫助下,結束您的情況爲例:
## Classical example: Student's sleep data
plot(extra ~ group, data = sleep)
## Traditional interface
with(sleep, t.test(extra[group == 1], extra[group == 2]))
## Formula interface
t.test(extra ~ group, data = sleep)
第二種形式(式接口)是最簡單的,當你有兩個組;你可以做到這4
一種方法(假設你的數據幀被稱爲yourdata
)將
with(yourdata, t.test(result[group == "a"], result[group == "b"]))
至於提取其中的分組指示需要一個特定值的值,順便這是在上面的幫助中的第一種形式給出的(在你的案例with(yourdata, result[group=="a"])
會給你只是組a的結果)。
+1。一個建議:我會使用'%',而不是'=='來避免選擇具有NA組值的記錄。例如:'group < - c(「a」,「b」,NA); group [group ==「a」];組[組%[%]「a」]'。當這種情況不太可能發生時,這是一種情況,但使用'%in%'作爲我的默認值可幫助我避免多年來的許多麻煩。 –
@MattParker +1這是一個很好的觀點(儘管NAs不會傷害這裏的例子)。我更喜歡'=='的原因是鼓勵使用幫助中的例子中的信息,這就是相關示例在'?t.test'下完成的方式。 –
以下不是「隨意」,而是自動計算所有「組」變量對。
下面是一些樣本數據:
mydf <- data.frame(
group = rep(letters[1:4], each = 10),
result = c(1:10, 5:14, 11:20, 15:24)
)
mydf
您可以使用combn
創建各組上使用t.test
的「配對」。
combn(as.character(unique(mydf$group)), 2,
FUN = function(y) t.test(result ~ group,
mydf[mydf$group %in% y ,]),
simplify = FALSE)
至於提取不同的載體,我認爲向量的list
可能更方便,您可以使用split
:
x <- split(mydf$result, mydf$group)
with(subset(df, group %in% c("a", "b")),
t.test(value ~ factor(group))
#
# df - your data.frame
#
歡迎堆棧溢出。發佈一些樣本數據,你很可能會驚訝於有人能夠更迅速地回覆你找到有用的答案。 – A5C1D2H2I1M1N2O1R2T1
[Here](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)你可以找到一些提示來完成Ananda剛纔所說的 –