s*****n 发帖数: 2174 | 1 方法很多, 比如下面这两个都可以
a <- c(T, T, F, F, T)
order(a, decreasing = T)[1:sum(a)]
(1:length(a))[a]
BTW, 尽量不要用c作为变量名, 有歧义. |
|
c******a 发帖数: 725 | 2 比如
X1<-first lag of X
X2<-second lag of X
.....
Xp<-p-th lag of X
p很大,能用一个loop来实现吗。 谢谢了。 |
|
|
s*r 发帖数: 2757 | 4 so you are thinking about SAS when playing with R
with R, you can use index to navigate through data rows |
|
c*2 发帖数: 24 | 5 I think you do it by assign
e.g.
assign("myVar1",1) |
|
c******a 发帖数: 725 | 6 Many thanks. Problem solved.
I found this code from the help file
for(i in 1:6) { #-- Create objects 'r.1', 'r.2', ... 'r.6' --
nam <- paste("r",i, sep=".")
assign(nam, 1:i)
} |
|
h*********o 发帖数: 151 | 7 如题。。。
因为第一行通常是变量名,而有的时候由于格式或者其他原因需要去掉。 |
|
L******n 发帖数: 197 | 8 header=T这样就可以把第一行作为变量名读入 而不是作为数据读入了 |
|
s******g 发帖数: 193 | 9 嗯,应该这就是问题,我把程序里的sid加了横线就出结果了。谢谢!
进一步检查,原来是我excel在输入sid的时候不小心加了一个空格,在excel里完全看
不出来,但是导入SAS后系统用下划线代替了空格,导致变量名出错...呵呵 |
|
|
D******n 发帖数: 2836 | 11 check out formula, as.character and paste functions |
|
s*****n 发帖数: 2174 | 12 这个属于稍微有点点高级的R应用了, 光这么说, 估计LZ未必能够搞定.
我给个example吧, 这里应该包含所有需要的东西了.
for (i in 1:10){
var_name <- paste("X_", i, sep = "")
assign(var_name, rnorm(100))
y_name <- paste("Y_", i, sep = "")
assign(y_name, 3 + 5 * get(var_name) + rnorm(100))
formula_name <- as.formula(paste(y_name, " ~ ", var_name, sep = ""))
print(formula_name)
print(lm(formula_name))
} |
|
|
|
|
p***r 发帖数: 920 | 16 刚才试了一下,好像不大用得起来啊,给出的结果是这样的
> i=1
> f <- as.formula(paste("y ~ ", names(treated)[i], ",data=treated",
sep=""))
Error in parse(text = x) : unexpected ',' in "col.one.up ~ Gender,"
高手帮忙分析一下 |
|
|
l**********s 发帖数: 255 | 18 data one;
input id x y;
datalines;
1 1 0
2 0 1
3 1 1
4 0 0
5 1 0
;
以上是我的数据(data one),我想建一个新的数据如下(data two),第一列是data one
里的变量名(x,y),第二列是"1"出现的次数,第三列是"1"出现的次数和总数(5)的比例
. 该怎么算呢?多谢多谢。
data two------
x 3 60%
Y 2 40% |
|
b*******r 发帖数: 152 | 19 i think sas has length cap on its own var name, right? |
|
A*****n 发帖数: 243 | 20 help(assign)
这个是用来给对应的变量名赋值的
working. |
|
a***s 发帖数: 616 | 21 谢谢.
但是当数组内的变量名不是连续的数字时,不能用"-"吧。
这个问题是我在考base的时候遇到的。不知道结果。 |
|
N**D 发帖数: 10322 | 22 r 这个东西就是给没有受过系统的编程训练的人用的, 没有见那个语言可以把句号用
在变量名里 |
|
N**D 发帖数: 10322 | 23 别C++, perl, python, java, ruby.....你看哪个吧句话用在变量名里?
当初听R的作者讲,问R的memory management, 回答是近期内没打算改进,然后就直接
放弃R 了 |
|
a****a 发帖数: 3411 | 24 新手问一个宏的问题
我想根据continuous variable的percentile value做一个categorical variable,比
方说有100个categories的categorical variable。
如果分组很多,输入不方便,修改一次变量名累也累死。
如何修改下面这个宏,能够实现划分任意多的category?
多谢 (包子不多2个)
%macro quint(dsn,var,quintvar);
proc univariate noprint data=&dsn;
var &var;
output out=quintile pctlpts=25,50,75,100 pctlpre=pct;
run;
data _null_;
set quintile;
call symput('q1',pct25) ;
call symput('q2',pct50) ;
call symput('q3',pct75) ;
call symput('q4',pct100) ;
run;
data &dsn;
set &dsn;
if &var =. ... 阅读全帖 |
|
a*****3 发帖数: 601 | 25 and (a>=1 and b>=2) 是合法变量名么? 谁来说说? |
|
b*****e 发帖数: 223 | 26 有没有一个 function 可以从一个 string 里面独独去掉我定义的单词
比如我有一个变量名 var1 用在 logistic model 里面,logistic model output 里的
effects 会有 var1 2:1, 我想要去掉 var1,只留 2:1 就好。有没有简单的
function 可以做?compress 是不行了 |
|
m****r 发帖数: 202 | 27 非常感谢dapangmao的回答。
我试了一下,结果是按字母顺序给出了所有的变量名。
不是我理想的,
能不能不改变输入顺序只去掉数字标号?
另,还有一部分format/informat要同时输入。
谢谢 |
|
d**s 发帖数: 1255 | 28 多谢!
以前这样的问题,很容易解决。用 ls.str()就能找到对应的变量名。但这次有点奇
怪,试了几种都不work。
感谢哪位大侠能出手帮忙!
> names(fit)
[1] "coefficients" "var" "loglik" "score"
[5] "iter" "linear.predictors" "residuals" "means"
[9] "method" "hazards" "y" "isF"
[13] "covars" "ttr" "w.means" "formula"
[17] "terms" "call" "events" |
|
F**********t 发帖数: 47 | 29 data a;set a;
date1 = MDY(1, 1, 2005);
format date1 YYMMDDN8.; (即使,把这句注释掉以后也不行)
date1 = MDY(1, 1, 2008);
format date1 YYMMDDN8.; (即使,把这句注释掉以后也不行)
IF DATE < date1 THEN DELETE;
IF DATE >= date2 THEN DELETE;
run;
a 表格有2001到2010年之间每个月最后一天的数据。以上代码是要删除2005年以前和
2008年以后的所有数据。可是,得到结果是表格里面没有任何数据了。
log file 里面有说 variable DATE is uninitialized.
但是,我确定变量名是 date, 而且表格a 在当前工作目录下。本来想把表格用附件贴
上来,可是论坛不让。 |
|
S********a 发帖数: 359 | 30 有个中文的EXCEL,需要读进SAS 9.2 (32),怎么读入中文文件名呢?谢谢!!! |
|
h******e 发帖数: 1791 | 31 我记得需要SAS National Language Support (NLS)。 |
|
S********a 发帖数: 359 | 32 谢谢!找了找,没搞懂encoding 怎么用,我的是windows 7, 下面的行不通啊
proc import datafile="Z:\a.xls" out=b DBMS=excel replace;
sheet="H"; getnames=yes;mixed=yes;
run;
data c (encoding=euc);
set b (encoding=euc);
run; |
|
|
T*******I 发帖数: 5138 | 34 为什么你不将你的变量名改成一下序列:
(of TR12_01-TR12_28) ????? |
|
|
g****8 发帖数: 2828 | 36 %let是不行的。
光用call symput还不行,因为你得到的是最后一行的那个值,每一步都是。
要每次值不一样,得每一步跟着换变量名。
call symput('x'||put(_N_,best.),trim(left(x)));
这样,就涉及到调用的时候也需要跟着换的问题。
想了想,没有什么好方法,可能搞个自增的macro var &i在date step里面然后再用&&
x&i调用。
个人觉得SAS这个只取最后一行值,挺脑残的,下个版本应该改进一下。
data |
|
d******9 发帖数: 404 | 37 Use VNAEM function.
data A;
input A B C D E;
cards;
9 6 3 1 7
2 3 5 0 9
3 5 7 6 4
;
run;
data B;
set A;
array X(5) A B C D E;
do I =1 to 5;
if X(I) = max(A,B,C,D,E) then Y=VNAME(X(I));
end;
run;
Output:
Obs A B C D E I Y
1 9 6 3 1 7 6 A
2 2 3 5 0 9 6 E
3 3 5 7 6 4 6 C |
|
c******n 发帖数: 380 | 38 array x{5} x1-x5;
z=max(of x1-x5);
do i=1 to dim(x);
if z=x{i} then y=vname(x{i});
end;
暂时想不到更直接的方法,有tie怎么处理? |
|
|
|
R******d 发帖数: 1436 | 41 transpose+proc sql join一次就好了 |
|
g****8 发帖数: 2828 | 42 你可以用个macro把所有的变量名读出来,然后写macro.
but |
|
P****D 发帖数: 11146 | 43 64位的Windows,64位的SAS,32位的Microsoft Office。
在32位电脑上好好的proc import报错,以为是安装时有些跟CONNECT有关的组件没装的
原因,于是重装SAS。
装了之后还是报同样的错,放狗。
狗说因为是32位的Microsoft Office所以要装32位的SAS PC Files Server,好,下载
安装。
装好了之后说unable to connect,继续放狗。
狗说不connect也可以,如果是要导入的Excel就在本机上。
于是回头run前面的proc import,不好使,再狗。
狗说在PC Files Server下要把dbms=excel改为dbms=excelcs,遂改。
改完继续报错,说getnames=这个选项在excelcs时不能用。
遂注释掉,然后发现Excel文件的列名,本来应该自动导入成变量名的,都变成变量值
了。
现在还在继续放狗……
正在考虑要不要下载个盗版64位Office(自己电脑)。这样SAS应该没问题了,但又有
别的兼容问题(微软自己的FAQ说的)……
已疯。求摸头、拍肩、拥抱、发包子。 |
|
e******e 发帖数: 410 | 44 需要用PROC EXPORT 导出几个文件
proc export data=table_1;
....
run;
需要判断这个文件(如上面的table_1)是不是空文件(一个obs都没有,只有变量名)
。 如果是空文件的话就自动不运行这个proc export 命令。
有同学知道这个怎么实现嘛? 多谢多谢。 |
|
T*******I 发帖数: 5138 | 45 【 以下文字转载自 WaterWorld 讨论区 】
发信人: TNEGIETNI (lovewisdom), 信区: WaterWorld
标 题: 今天是我生命里很特别的一天
发信站: BBS 未名空间站 (Tue Jun 4 06:53:57 2013, 美东)
今天是我生命里很特别的一天
今天是6月3日。
早上7点10分便起了床,同时叫醒了两个女儿。妻子现在是早上7点上班,下午3
点10分下班,以便照看放学后的小女儿。所以,小女儿的梳洗、早餐以及餐后陪送到校
巴等都是成了我的晨间事务。
小女儿的小学还没有放暑假,大女儿的大学则已经放暑假一个多星期了,今天是
她到某疾病研究中心做internship的第一天。
我给她们两人都准备好了早餐,吩咐好了她们尽快来餐厅吃早餐,便来到客厅,
拾起昨天下班回家后在其颈-体结合部涂上胶水以便将面板的上端粘上琴体的小提琴,
取下两个C型夹子,然后拿着它到了洗衣房。那里同时也是我的修琴工作间。我要在那
里为它的面板的其余部分涂上胶水并加上一圈木头夹子,以便能在今天下班回家时看到
基本完工的它。
... 阅读全帖 |
|
v*******e 发帖数: 11604 | 46
要学会看数据的类型。
class(你的变量名) |
|
n****t 发帖数: 182 | 47 “如果检验的结果是在一定的概率水平上拒绝H0,则只能在同一概率水平上接受H1”
这个理解是不正确的。接受H1 的说法在统计考试里是要被扣分的。而况在这个问题里
H1是“不等于0”,和“接受b”也不等同-- b本身是个统计量,有其相应的估计、方差
等等,谈不上接受--
当前的这个是最优无偏估计 (当然这个说法和P值就无关了――最优和无偏谈论的是
这个方法)。
y=1, y=1 x 他写的是design matrix,对于covariate variable,只写了变量名而没
有写系数,编程的时候都是这么作的。相对于说y=b0*1+b1*x+e,他这个写法没什么问题。 |
|
w*****1 发帖数: 473 | 48 【 以下文字转载自 Unix 讨论区 】
发信人: wz99331 (dotti), 信区: Unix
标 题: 如何合并两个数据文件
发信站: BBS 未名空间站 (Mon Mar 24 15:53:39 2014, 美东)
我有两个数据文件,第一个有3000多行(每行代表一个人的家庭情况),第二个有
1800多行,每行代表一个人的其他情况。现在想把两个文件合并起来,第2个文件
里的人都包含在第1个文件里面。合并后的人数和第1个文件一样,有1200人的其
他情况没有数据,就视为缺省值。由于数据非常大,第一行也没有变量名,所以没法用
SAS和R。请问UNIX有没有可以这样合并的命令?谢谢! |
|
|
K*****2 发帖数: 9308 | 50 两个错误:x的变量名重复,要区分;rnormal里面的i没加引号
set obs 1
local i = 1
while `i' <= 100 {
gen var_`i' = rnormal(0,`i')
local i = `i' + 1
}
包子就不用了 |
|