我有以下内容data.frame:
id name altNames
1001 Joan character(0)
1002 Jane c("Janie", "Janet", "Jan")
1003 John Jon
1004 Bill Will
1005 Tom character(0)
Run Code Online (Sandbox Code Playgroud)
列altNames可以为空(即字符(0)),只有一个名称或名称列表.我想要的是一个data.frame(或一个列表),其中每个条目name和/或altNames只出现一次与对应的id一样,如下所示:
id name
1001 Joan
1002 Jane
1002 Janie
1002 Janet
1002 Jan
1003 John
1003 Jon
1004 Bill
1004 Will
1005 Tom
Run Code Online (Sandbox Code Playgroud)
这样做最有效的方法是什么?dplyr利用甚至更好.谢谢
编辑:这是数据:
df <- data_frame(
id = c("1001", "1002","1003", "1004", "1005"),
name = c("Joan", "Jane", "John", "Bill", "Tom"),
altNames = list(character(0), c("Janie", …Run Code Online (Sandbox Code Playgroud) 我有json包含国家数据的文件.其中一个文件包含以下数据:
"[{\"count\":1,\"subject\":{\"name\":\"Namibia\",\"alpha2\":\"NA\"}}]"
Run Code Online (Sandbox Code Playgroud)
我将以下代码转换json为data.frame使用jsonlite包:
df = as.data.frame(fromJSON(jsonfile), flatten=TRUE))
Run Code Online (Sandbox Code Playgroud)
我期待一个data.frame数字和字符串:
count subject.name subject.alpha2
1 Namibia "NA"
Run Code Online (Sandbox Code Playgroud)
相反,NAalpha2代码会自动转换为NA逻辑,这就是我得到的:
str(df)
$ count : int 1
$ subject.name : chr "Namibia"
$ subject.alpha2: logi NA
Run Code Online (Sandbox Code Playgroud)
我希望alpha2是一个字符串,而不是逻辑.我该如何解决?
我有一个csv国家名称及其iso代码的文件.这是它的样子:
"Name","Code"
"Afghanistan","AF"
"Albania","AL"
"Algeria","DZ"
"Namibia","NA"
Run Code Online (Sandbox Code Playgroud)
我data.frame使用以下代码阅读它:
cc = read.csv("countries.csv", header=TRUE, stringsAsFactors=FALSE,
colClasses = c("character"))
Run Code Online (Sandbox Code Playgroud)
这是数据的样子:
Name Code
Afghanistan AF
Albania AL
Algeria DZ
Namibia <NA>
Run Code Online (Sandbox Code Playgroud)
即使我明确设置 ,字符串"NA"也会转换为.<NA>colClasses = c("character")
我如何"NA"展示作为"NA"的data.frame?