The output I have now looks like
[2] "DOYLESTOWN HOSPITAL | PA | 10.4"
[3] "GLENDALE ADVENTIST MEDICAL CENTER | CA | 10.5"
[4] "AVERA HEART HOSPITAL OF SOUTH DAKOTA LLC | SD | 10.5"
[5] "WATERBURY HOSPITAL | CT | 10.6"
[6] "MAIN LINE HOSPITAL LANKENAU | PA | 10.7"
I am using this code to generate that list
for (x in df){
paste(df$name,df$state, df$outcome, sep = " | ")
}
Now I'd like to create a dataframe instead and populate it with this data
Expected output
hospital state rank
D W MCMILLAN MEMORIAL HOSPITAL AL 10
ARKANSAS METHODIST MEDICAL CENTER AR 14
class(df) [1]
"data.frame"
CodePudding user response:
We can use:
mytext <- c("DOYLESTOWN HOSPITAL | PA | 10.4","GLENDALE ADVENTIST MEDICAL CENTER | CA | 10.5")
splitted <- strsplit(mytext, split="\\|")
hospital <- sapply(splitted, function(x) x[[1]])
state <- sapply(splitted, function(x) x[[2]])
rank <- sapply(splitted, function(x) x[[3]])
> result
hospital state rank
1 DOYLESTOWN HOSPITAL PA 10.4
2 GLENDALE ADVENTIST MEDICAL CENTER CA 10.5
However, I don't really see the point if you already have the data available in df
.
Of course if you were just after the syntax, it makes sense.
Please do make your data reproducible next time.
CodePudding user response:
In base R
, we may use read.csv/read.table
if we specify the delimiter correctly
read.csv(text = gsub("\\s \\|\\s ", ",", str1),
header = FALSE, col.names = c("hospital", "state", "rank"))
hospital state rank
1 DOYLESTOWN HOSPITAL PA 10.4
2 GLENDALE ADVENTIST MEDICAL CENTER CA 10.5
data
str1 <- c("DOYLESTOWN HOSPITAL | PA | 10.4",
"GLENDALE ADVENTIST MEDICAL CENTER | CA | 10.5"
)