Ghanshyam Savaliya
Ghanshyam Savaliya

Reputation: 608

How to run R Code within Python interface?

I am trying to run below code where I want to read csv file and then write "sas7bdat". I have tried below code.

we already have prerequisite library installed on the system for R.

from rpy2 import robjects    

robjects.r('''
        library(haven)
        data <- read_csv("filename.csv")
        write_sas(data, "filename.sas7bdat")
        ''')

After running above code, there are no output get generated by this code and even I am not getting any error.

Expected output: trying to read .csv file and then that data i want to export in .sas7bdat format. (In Standard python 3.9.2 Editor)

python do not have such functionality/library hence I am trying this way to export data in .sas7bdat format.

Plz Suggest some change in above code or any other way in python through which I can create/export .sas7bdat format in python.

Thanks.

Upvotes: 0

Views: 2429

Answers (2)

Econ_matrix
Econ_matrix

Reputation: 405

Please before you run the code make sure that haven and reader are installed in your R kernel.

from rpy2.robjects.packages import SignatureTranslatedAnonymousPackage

string = """
         write_sas <- function(file, col_names = TRUE, write_to){
             
             data <- readr::read_csv(file, col_names = col_names)
             haven::write_sas(data, path = write_to)
 print(paste("Data is written to ", write_to))

}
""" 

rwrap = SignatureTranslatedAnonymousPackage(string, "rwrap")

rwrap.write_sas( file = "https://robjhyndman.com/data/ausretail.csv", 
                col_names = False,
                write_to = "~/Downloads/filename.sas7bdat")

You can use any of the R function arguments. same as I used col_names

Upvotes: 0

Jeremy
Jeremy

Reputation: 876

I had experience using R in Python Jupyter Notebooks, it is a bit complicated at beginning, but it did work. Here I just pasted my personal notes, hope these help:

# Major steps in installing "rpy2":
# Step 1: install R on Jupyter Notebook: conda install -c r r-essentials
# Step 2: install the "rpy2" Python package: pip install rpy2 (you may have to check the version)
# Step 3: create the environment variables: R_HOME, R_USER and R_LIBS_USER 
# you can modify these environment variables in the system settings on your windows PC or use codes to set them every time)

# load the rpy2 module after installation
# Then you will be able to enable R cells within the Python Jupyter Notebook
# run this line in your Jupyter Notebook
%load_ext rpy2.ipython

My work was to do ggplot2 in Python, so I did:

# now use R to access this dataframe and plot it using ggplot2
# tell Jupyter Notebook that you are going to use R in this cell, and for the "test_data" generated using the Python
%%R -i test_data 
library(ggplot2)

plot <- ggplot(test_data) + 
        geom_point(aes(x,y),size = 20)
plot
ggsave('test.png')

Upvotes: 1

Related Questions