【发布时间】:2018-04-01 13:19:50
【问题描述】:
我有两个数据框数据框 1,数据框 2,如何将两个数据框列值与 P.Name、Name、Q.Name 进行比较并更新相同的值并附加不同的值行。请检查下面的例子。
数据框1
P.Name Name Q.Name values
Read Mike salseID list(value = "Y2TS", countofvalues = 1)
Write jhon Purchasedcust list(value = "ANDERSON", countofvalues = 1)
write jhon shippingname list(value = "Mikel", countofvalues = 5)
Read peter ordername list(value = c("july", "mary", "petersonavail"), countofvalues = c(1, 2, 1))
Write jack deliveredadd list(value = c("IICC PS LOL UY", "IICC UYY LOL UY"), countofvalues = c(2,1))
数据框 2
P.Name Name Q.Name values
Read Mike salseID list(value = "Y2TS", countofvalues = 1)
Write jhon Purchasedcust list(value = "vjantony", countofvalues = 1)
write jhon CustaAddress list(value = "Mikel", countofvalues = 5)
Read peter ordername list(value = c("july", "mary", "parker"), countofvalues = c(1, 2, 1))
预期的数据框:
P.Name Name Q.Name values
Read Mike salseID list(value = "Y2TS", countofvalues = 2)
Write jhon Purchasedcust list(value = c("ANDERSON","vjantony"), countofvalues = c(1,1))
write jhon shippingname list(value = "Mikel", countofvalues = 5)
write jhon CustaAddress list(value = "Mikel", countofvalues = 5)
Read peter ordername list(value = c("july", "mary", "petersonavail","parker"), countofvalues = c(2, 4, 1,1))
Write jack deliveredadd list(value = c("IICC PS LOL UY", "IICC UYY LOL UY"), countofvalues = c(2,1))
Data frame1 输入数据。
structure(list(P.Name = c("Read", "Write", "Write", "Read", "Write"
), Name = c("Mike", "jhon", "jhon", "peter", "jack"), Q.Name = c("salseID",
"Purchasedcust", "shippingname", "ordername", "deliveredadd"),
values = list(structure(list(value = "Y2TS", countofvalues = 1L), .Names = c("value",
"countofvalues"), row.names = c(NA, -1L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(value = "ANDERSON",
countofvalues = 1L), .Names = c("value", "countofvalues"
), row.names = c(NA, -1L), class = c("tbl_df", "tbl", "data.frame"
)), structure(list(value = "Mikel", countofvalues = 5L), .Names = c("value",
"countofvalues"), row.names = c(NA, -1L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(value = c("july", "mary",
"petersonavail"), countofvalues = c(1L, 2L, 1L)), .Names = c("value",
"countofvalues"), row.names = c(NA, -5L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(value = c("IICC PS LOL UY",
"IICC UYY LOL UY"), countofvalues = c(2L, 1L)), .Names = c("value",
"countofvalues"), row.names = c(NA, -3L), class = c("tbl_df",
"tbl", "data.frame")))), .Names = c("P.Name", "Name", "Q.Name",
"values"), row.names = c(NA, -5L), class = "data.frame")
数据框 2 输入数据
structure(list(P.Name = c("Read", "Write", "Write", "Read"),
Name = c("Mike", "jhon", "jhon", "peter"), Q.Name = c("salseID",
"Purchasedcust", "CustaAddress", "ordername"), values = list(
structure(list(value = "Y2TS", countofvalues = 1L), .Names = c("value",
"countofvalues"), row.names = c(NA, -1L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(value = "vjantony",
countofvalues = 1L), .Names = c("value", "countofvalues"
), row.names = c(NA, -1L), class = c("tbl_df", "tbl",
"data.frame")), structure(list(value = "Mikel", countofvalues = 5L), .Names = c("value",
"countofvalues"), row.names = c(NA, -4L), class = c("tbl_df",
"tbl", "data.frame")), structure(list(value = c("july",
"mary", "parker"), countofvalues = c(1L, 2L, 1L)), .Names = c("value",
"countofvalues"), row.names = c(NA, -3L), class = c("tbl_df",
"tbl", "data.frame")))), .Names = c("P.Name", "Name",
"Q.Name", "values"), row.names = c(NA, -4L), class = "data.frame")
【问题讨论】:
-
比较两列你可以做 df1$col1==df2$col1 ...你会得到 TRUE 或 FALSE ...但是你问题的第二部分真的不清楚......更新列表是什么意思?列表中的这些值来自哪里?如果没有进一步的解释,很难提供帮助..到目前为止,您应该展示您的代码..您已经尝试了什么?
-
@Thai,实际上我的期望是获取数据框 2 行值并通过 P.Name,Name ,Q.Name 比较数据框 1 行值,如果 P.Name,Name ,Q.Name 行值是常见的方法,我们需要更新值列表,否则需要添加比较行。例如:数据帧 1 的第一行和数据帧 2 的第一行值是共同的,同时列表值也很常见所以 countofvalues =2。但是第二行 P.Name,Name,Q.Name 行值相同但列表值不同所以 countofvalues = c(1,1))。
-
data2 的 dput 在哪里?
-
@jimbou,我已更新数据框 2 的 dput。请检查。
-
@Jimbou,感谢您的回复,但我的要求不同,您能否参考我上面的预期数据框。我需要分组 P.Name,Name , Q.Name.if 我需要附加的新行值。
标签: r