avatar
r*5
1
data是这样的
house_value Crime_Rate Charles_river_bound num_of_rooms dist_to_employment_
center property_tax_rate
1 240000 0.00632 No 7
4.0900 296
2 216000 0.02731 No 6
4.9671 242
3 347000 0.02729 No 7
4.9671 242
4 334000 0.03237 No 7
6.0622 222
5 362000 0.06905 No 7
6.0622 222
输出结果是
mean min max
house_value 444 23 4445
Crime_Rate 23 1 99
-----
就是说将columns求mean后在以row的形式输出。 这个怎么实现? 谢谢
avatar
f*8
2
t(apply(mtcars, 2, summary))[, c(4,1,6)] # If all columns are numeric
t(apply(mtcars[, sapply(mtcars, is.numeric)], 2, summary))[, c(4,1,6)] # If
not sure
Output:
Mean Min. Max.
mpg 20.0900 10.400 33.900
cyl 6.1880 4.000 8.000
disp 230.7000 71.100 472.000
hp 146.7000 52.000 335.000
drat 3.5970 2.760 4.930
wt 3.2170 1.513 5.424
qsec 17.8500 14.500 22.900
vs 0.4375 0.000 1.000
am 0.4062 0.000 1.000
gear 3.6880 3.000 5.000
carb 2.8120 1.000 8.000
avatar
r*5
3
非常感谢,我用
MeanMedian。。。。
然后用data.frame(Mean,Median。。)看来是非常繁琐,你的简单多了。
如果我要加入ID和名字,尤其是ID,用原来的column的col number。 例如,1 ,2,3
(1,2,3对应的是column的位置,怎么来实现?如果我要再加入一个col,用来检查是
否有missing data。 这个怎么加到你的里面?
这里你根据summary里的排列列出min, max, 如果要给中间插入一个col如sdev,就像
下面的一样。好像就不能用t(apply。。。 太多问题了,就想把它弄明白。
ID name Mean sdev Min. Max. missing
:1 mpg 20.0900 0.4 10.400 33.900 1
:2 cyl 6.1880 0.2 4.000 8.000 2
:3 disp 230.7000 0.1 71.100 472.000 3
:4 hp 146.7000 0.05 52.000 335.000 0
:5 drat 3.5970 0.2 2.760 4.930 1

If

【在 f***8 的大作中提到】
: t(apply(mtcars, 2, summary))[, c(4,1,6)] # If all columns are numeric
: t(apply(mtcars[, sapply(mtcars, is.numeric)], 2, summary))[, c(4,1,6)] # If
: not sure
: Output:
: Mean Min. Max.
: mpg 20.0900 10.400 33.900
: cyl 6.1880 4.000 8.000
: disp 230.7000 71.100 472.000
: hp 146.7000 52.000 335.000
: drat 3.5970 2.760 4.930

avatar
r*5
4
This is fantastic. But is t() a function. I tried to fund its use, couldn
't find it.

If

【在 f***8 的大作中提到】
: t(apply(mtcars, 2, summary))[, c(4,1,6)] # If all columns are numeric
: t(apply(mtcars[, sapply(mtcars, is.numeric)], 2, summary))[, c(4,1,6)] # If
: not sure
: Output:
: Mean Min. Max.
: mpg 20.0900 10.400 33.900
: cyl 6.1880 4.000 8.000
: disp 230.7000 71.100 472.000
: hp 146.7000 52.000 335.000
: drat 3.5970 2.760 4.930

avatar
j*6
5
看看这里http://www.statmethods.net/stats/descriptives.html
psych package里的describe()好像最符合你要求。
library(psych)
describe(mydata)
# item name ,item number, nvalid, mean, sd,
# median, mad, min, max, skew, kurtosis, se
t()是用来进行matrix transpose的
avatar
f*8
6
可以用apply(df, 2, function(x) ...)
比如 t(apply(mtcars, 2, function(x) c(summary(x)[c(4,1,6)], Stdev=sd(x),
Missing=sum(is.na(x)))))

3

【在 r****5 的大作中提到】
: 非常感谢,我用
: Mean: Median: 。。。。
: 然后用data.frame(Mean,Median。。)看来是非常繁琐,你的简单多了。
: 如果我要加入ID和名字,尤其是ID,用原来的column的col number。 例如,1 ,2,3
: (1,2,3对应的是column的位置,怎么来实现?如果我要再加入一个col,用来检查是
: 否有missing data。 这个怎么加到你的里面?
: 这里你根据summary里的排列列出min, max, 如果要给中间插入一个col如sdev,就像
: 下面的一样。好像就不能用t(apply。。。 太多问题了,就想把它弄明白。

avatar
r*5
7
f0008非常感谢,我用了
t(apply(subhw,2,FUN=function(x) c(Missing=sum(is.na(x)),Mean=mean(x),Median
=median(x), sdev=sd(x), Min=min(x), Max=max(x))))

如果col没有排序要求,你的更简单。原来summary里可以再加其他function, 象sd等
,我还以为仅仅能用原有的6个呢。
还有个问题,就是这个显示print 后再屏幕上有row names,就是原来的col names。但
是write。table后就没有了。这样我要再加一个col才行。我在上面的function里加了
mycols=colnames(x)。但是执行后没有显示出来
summary.na(x)),Mean=mean(x),Median=median(x), sdev=sd(x), Min=min(x), Max=max(x))))
print(subpart)
我另用mycol然后加入前一个的data.frame。这样可以,但是是不是显得太罗嗦了?
mycolssummarys
【在 f***8 的大作中提到】
: 可以用apply(df, 2, function(x) ...)
: 比如 t(apply(mtcars, 2, function(x) c(summary(x)[c(4,1,6)], Stdev=sd(x),
: Missing=sum(is.na(x)))))
:
: 3

avatar
r*5
8
xiexie你!

【在 j****6 的大作中提到】
: 看看这里http://www.statmethods.net/stats/descriptives.html
: psych package里的describe()好像最符合你要求。
: library(psych)
: describe(mydata)
: # item name ,item number, nvalid, mean, sd,
: # median, mad, min, max, skew, kurtosis, se
: t()是用来进行matrix transpose的

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。