R中的Stata“使用if”功能

时间:2018-07-05 01:11:20

标签: r stata

有没有一种方法可以根据特定条件加载.dta文件。

例如,在Stata中,您可以使用use if vara==1 using "some/file/path"

加载文件

我在这里看到过一些有关仅加载特定数量观察值的较早的帖子,但是没有看到有关此功能的帖子。

2 个答案:

答案 0 :(得分:1)

以下代码根据vara的值,为变量vara随机分配0或1并从2个不同的csv文件中的1个读取变量:

data(iris)

write.csv(iris,"iris.csv")
write.csv(iris1,"iris1.csv")

vara <- ifelse(rnorm(1) > .15,1,0) # randomly assign a 1 or 0

# Stata: use if vara==1 using "some/file/path"

new_data <- ifelse(vara==1,read.csv("iris.csv"),read.csv("iris1.csv"))

我假设您只是在问如何像在Stata中一样有条件地在R中读取文件。如果您还想知道如何实际读取旧的dta文件,那么您还应该使用其中一个库中的特殊功能,例如@thelatemail在评论中提到的read.dta(另请参见:https://stat.ethz.ch/R-manual/R-devel/library/foreign/html/read.dta.html)。

如果您正在阅读常见的文件类型(例如csv),并且它们非常大,则可以考虑使用fread中的data.tableread_csv中的readr

答案 1 :(得分:0)

与第一部分有关,您可以执行简单的if..else或类似的操作:

#Type of file
type=c(2)
#Variable to store your file
fn=switch(i,"filename1","filename2","filename3")
# fn now is "filename2"
  

仅加载特定数量的观察结果

这是可能的。最简单的方法是检查read.csv()功能的手册。在R提示符下键入以下内容:help(read.csv)。将打开一个帮助窗口,显示文档。您可以观察到您感兴趣的功能的签名:

read.csv(file, header = TRUE, sep = ",", quote = "\"", dec = ".", fill = TRUE, comment.char = "", ...)

及以下,此功能允许使用的参数之一是您要查找的参数:

nrows integer: the maximum number of rows to read in. Negative and other invalid values are ignored.